Другие языки программирования и технологии
Помогите решить задачу по информатике
Сведения об учениках, прошедших тестирование на 5-ти различных тестах, заданы в ведомости следующей структуры: порядковый номер ученика, его фамилия и инициалы, пять оценок по каждому тесту в баллах (от 0 до 20). Требуется распечатать список учеников, у которых средний балл по 5-ти тестам больше общего среднего балла.
uses crt;
type info = record
fio: string [20];
o1: integer;
o2: integer;
o3: integer;
o4: integer;
o5: integer;
oo: integer;
end;
const c : array [1..3] of integer = (3,6,12);
var i, n, m : integer;
table: array [1..100] of info;
begin
clrscr;
randomize;
m:=0;
write (' Введите количество учеников [1..100]:');
readln (n);
for i:=1 to n do
begin
if i<10 then table[i].fio:=' Ученик #0'+ inttostr (i)
else table[i].fio:=' Ученик #'+ inttostr (i);
table[i].o1:=random(21);
table[i].o2:=random(21);
table[i].o3:=random(21);
table[i].o4:=random(21);
table[i].o5:=random(21);
table[i].oo:=trunc((table[i].o1+table[i].o2+table[i].o3+table[i].o4+table[i].o5)/5);
m:=m+table[i].oo;
end;
writeln ('#':3,'ФИО':10,'Тест1':14,'Тест2':9,'Тест3':9,'Тест4':9,'Тест5':9,'Средний':12);
for i:=1 to n do
begin
write (i:3);
write (table[i].fio:14);
write (table[i].o1:9);
write (table[i].o2:9);
write (table[i].o3:9);
write (table[i].o4:9);
write (table[i].o5:9);
write (table[i].oo:10);
writeln;
end;
writeln;
m:=round (m/n);
writeln (' средний балл =', m, ', список учеников, у которых средний балл по 5-ти тестам больше общего среднего балла');
writeln;
for i:=1 to n do
if table[i].oo >= m then
begin
write (i:3);
write (table[i].fio:14);
write (table[i].o1:9);
write (table[i].o2:9);
write (table[i].o3:9);
write (table[i].o4:9);
write (table[i].o5:9);
write (table[i].oo:10);
writeln;
end;
end.
type info = record
fio: string [20];
o1: integer;
o2: integer;
o3: integer;
o4: integer;
o5: integer;
oo: integer;
end;
const c : array [1..3] of integer = (3,6,12);
var i, n, m : integer;
table: array [1..100] of info;
begin
clrscr;
randomize;
m:=0;
write (' Введите количество учеников [1..100]:');
readln (n);
for i:=1 to n do
begin
if i<10 then table[i].fio:=' Ученик #0'+ inttostr (i)
else table[i].fio:=' Ученик #'+ inttostr (i);
table[i].o1:=random(21);
table[i].o2:=random(21);
table[i].o3:=random(21);
table[i].o4:=random(21);
table[i].o5:=random(21);
table[i].oo:=trunc((table[i].o1+table[i].o2+table[i].o3+table[i].o4+table[i].o5)/5);
m:=m+table[i].oo;
end;
writeln ('#':3,'ФИО':10,'Тест1':14,'Тест2':9,'Тест3':9,'Тест4':9,'Тест5':9,'Средний':12);
for i:=1 to n do
begin
write (i:3);
write (table[i].fio:14);
write (table[i].o1:9);
write (table[i].o2:9);
write (table[i].o3:9);
write (table[i].o4:9);
write (table[i].o5:9);
write (table[i].oo:10);
writeln;
end;
writeln;
m:=round (m/n);
writeln (' средний балл =', m, ', список учеников, у которых средний балл по 5-ти тестам больше общего среднего балла');
writeln;
for i:=1 to n do
if table[i].oo >= m then
begin
write (i:3);
write (table[i].fio:14);
write (table[i].o1:9);
write (table[i].o2:9);
write (table[i].o3:9);
write (table[i].o4:9);
write (table[i].o5:9);
write (table[i].oo:10);
writeln;
end;
end.
Считаешь средний балл для каждого, считаешь общий средний балл, циклом ищешь в первом списке тех, у кого средний балл выше среднего.
Конкретняя реализация зависит от технологий. Можно, например, сделать с помощью mysql и вьюх в нём.
Конкретняя реализация зависит от технологий. Можно, например, сделать с помощью mysql и вьюх в нём.
*Содержимое основного *.cpp файла программы: */
#include "stdafx.h"
#include "locale.h" //" " заменить на < >
#include "cl_list.h"
int main()
{
setlocale(0,"Rus");
cl_list l;
l.calc();
printf("Press any key for continue . .\n");
getch();
return 0;
}
/*Содержимое файла st_student.h*/
struct st_student
{
int n;
char f[32];
char io[8];
int e1;
int e2;
int e3;
int e4;
int e5;
float a;
};
/*Содержимое файла cl_list.h*/
#include "st_student.h"
#include
#include
class cl_list
{
int N;
FILE *F;
st_student *l;
void except(int code);
void get_count_of_records_in_a_file();
void print(int num);
public:
cl_list();
void print();
void calc();
~cl_list();
};
/*Содержимое файла cl_list.cpp*/
#include "stdafx.h"
#include "cl_list.h"
void cl_list::except(int code)
{
printf("Ошибка! Файл ""list.txt"" ");
switch(code)
{
case 0: printf("не найден. \n"); break;
case 1: printf("заполнен некорректно. \n"); break;
}
printf("Press any key for continue . .\n");
getch();
exit(0);
}
void cl_list::get_count_of_records_in_a_file()
{
fseek(F,0,SEEK_END);
for(int i=ftell(F);i>=0;i--)
{
fseek(F,i,SEEK_SET);
if(fgetc(F)=='\n')
{
fseek(F,i+1,SEEK_SET);
if(fscanf(F,"%d",&N)<=0)
throw 1;
break;
}
}
rewind(F);
}
void cl_list::calc()
{
float A=0;
for(int i=0;i<N;i++)
{
l[i].a=l[i].e1+l[i].e2+l[i].e3+l[i].e4+l[i].e5;
l[i].a/=5;
A+=l[i].a;
}
A/=N;
printf("Общий средний балл: %.2f\n",A);
for(int i=0;iA)
print(i);
}
}
cl_list::cl_list()
{
try
{
if(F=fopen("list.txt", "r"))
{
get_count_of_records_in_a_file();
l=(st_student*)malloc(N*sizeof(st_student));
char* tmp=new char[64]; fgets(tmp,64,F); delete[] tmp;
for(int i=0;fscanf(F,"%d. %s %s %d %d %d %d %d", &l[i].n, &l[i].f, &l[i].io, &l[i].e1, &l[i].e2, &l[i].e3, &l[i].e4, &l[i].e5)!=EOF;i++)
if(l[i].e1<0 || l[i].e1>20 || l[i].e2<0 || l[i].e2>20 || l[i].e3<0 || l[i].e3>20 || l[i].e4<0 || l[i].e4>20 || l[i].e5<0 || l[i].e5>20)
throw 1;
fclose(F);
}
else
throw 0;
}
catch(int code)
{
except(code);
}
}
void cl_list::print(int num)
{
printf("%d. %s %s %.2f\n", l[num].n, l[num].f, l[num].io, l[num].a);
}
void cl_list::print()
{
for(int i=0;i<N;i++)
printf("%d. %s %s %d %d %d %d %d\n", l[i].n, l[i].f, l[i].io, l[i].e1, l[i].e2, l[i].e3, l[i].e4, l[i].e5);
}
cl_list::~cl_list()
{
free(l);
}
/*Содержимое тестового файла list.txt*/
№ ФИО Ученика рус. общ. мат. инф. физ.
1. Андреев С. Е. 18 16 17 12 16
2. Борисов С. Б. 16 15 16 17 18
3. Валерьева Ю. В. 12 20 16 17 17
4. Геннадьев Ю. Г. 17 16 17 18 16
5. Денисов Д. Р. 20 18 19 20 18
6. Максимова А. М. 20 16 15 20 19
7. Николаева Е. С. 19 16 17 20 19
/* Комментарий*/
После записей в файле list.txt не должно быть пустых строк. После заголовка тоже. Если последний номер записи в файле, не соответствует их количеству, то количество записей в файле указывается с новой строки. Файл list.txt должен находиться в том-же каталоге, что и основной файл программы.

#include "stdafx.h"
#include "locale.h" //" " заменить на < >
#include "cl_list.h"
int main()
{
setlocale(0,"Rus");
cl_list l;
l.calc();
printf("Press any key for continue . .\n");
getch();
return 0;
}
/*Содержимое файла st_student.h*/
struct st_student
{
int n;
char f[32];
char io[8];
int e1;
int e2;
int e3;
int e4;
int e5;
float a;
};
/*Содержимое файла cl_list.h*/
#include "st_student.h"
#include
#include
class cl_list
{
int N;
FILE *F;
st_student *l;
void except(int code);
void get_count_of_records_in_a_file();
void print(int num);
public:
cl_list();
void print();
void calc();
~cl_list();
};
/*Содержимое файла cl_list.cpp*/
#include "stdafx.h"
#include "cl_list.h"
void cl_list::except(int code)
{
printf("Ошибка! Файл ""list.txt"" ");
switch(code)
{
case 0: printf("не найден. \n"); break;
case 1: printf("заполнен некорректно. \n"); break;
}
printf("Press any key for continue . .\n");
getch();
exit(0);
}
void cl_list::get_count_of_records_in_a_file()
{
fseek(F,0,SEEK_END);
for(int i=ftell(F);i>=0;i--)
{
fseek(F,i,SEEK_SET);
if(fgetc(F)=='\n')
{
fseek(F,i+1,SEEK_SET);
if(fscanf(F,"%d",&N)<=0)
throw 1;
break;
}
}
rewind(F);
}
void cl_list::calc()
{
float A=0;
for(int i=0;i<N;i++)
{
l[i].a=l[i].e1+l[i].e2+l[i].e3+l[i].e4+l[i].e5;
l[i].a/=5;
A+=l[i].a;
}
A/=N;
printf("Общий средний балл: %.2f\n",A);
for(int i=0;iA)
print(i);
}
}
cl_list::cl_list()
{
try
{
if(F=fopen("list.txt", "r"))
{
get_count_of_records_in_a_file();
l=(st_student*)malloc(N*sizeof(st_student));
char* tmp=new char[64]; fgets(tmp,64,F); delete[] tmp;
for(int i=0;fscanf(F,"%d. %s %s %d %d %d %d %d", &l[i].n, &l[i].f, &l[i].io, &l[i].e1, &l[i].e2, &l[i].e3, &l[i].e4, &l[i].e5)!=EOF;i++)
if(l[i].e1<0 || l[i].e1>20 || l[i].e2<0 || l[i].e2>20 || l[i].e3<0 || l[i].e3>20 || l[i].e4<0 || l[i].e4>20 || l[i].e5<0 || l[i].e5>20)
throw 1;
fclose(F);
}
else
throw 0;
}
catch(int code)
{
except(code);
}
}
void cl_list::print(int num)
{
printf("%d. %s %s %.2f\n", l[num].n, l[num].f, l[num].io, l[num].a);
}
void cl_list::print()
{
for(int i=0;i<N;i++)
printf("%d. %s %s %d %d %d %d %d\n", l[i].n, l[i].f, l[i].io, l[i].e1, l[i].e2, l[i].e3, l[i].e4, l[i].e5);
}
cl_list::~cl_list()
{
free(l);
}
/*Содержимое тестового файла list.txt*/
№ ФИО Ученика рус. общ. мат. инф. физ.
1. Андреев С. Е. 18 16 17 12 16
2. Борисов С. Б. 16 15 16 17 18
3. Валерьева Ю. В. 12 20 16 17 17
4. Геннадьев Ю. Г. 17 16 17 18 16
5. Денисов Д. Р. 20 18 19 20 18
6. Максимова А. М. 20 16 15 20 19
7. Николаева Е. С. 19 16 17 20 19
/* Комментарий*/
После записей в файле list.txt не должно быть пустых строк. После заголовка тоже. Если последний номер записи в файле, не соответствует их количеству, то количество записей в файле указывается с новой строки. Файл list.txt должен находиться в том-же каталоге, что и основной файл программы.

Похожие вопросы
- Народ, слезно прошу помочь решить задачу по информатике (програмирование), я просто ноль в этом(((
- Помогите решить задачу по информатике 10 класс
- Помогите решить задачи по информатике!!! ОЧЕНЬ НУЖНО!!!
- Ребята помогите решить задачу по информатике ПЛАЧУ 50 БАЛОВ ЗА ЛУТШИЙ ОТВЕТ
- помогите решить задачи по информатике
- Помогите решить задачи по информатике.
- Помогите решить задачи по информатике.
- помогите решить задачу по информатике, срочно нужно ( программирование с++)
- Помогите решить задачу по информатике ...паскаль
- Помогите решить задачу по информатике. Массивы. Язык программирования Паскаль.