program lab_10;
uses crt;
type
book=record
fio: string[30];
group: string[20];
score: integer;
end;
data_b=array[1..100] of book;
var
db: data_b;
db_zero: data_b;
kol_vo,oper: integer;
ext: boolean;
f: text;
procedure IN_1 (var m: data_b; var a: integer);
var i:integer;
begin
m:=db_zero;
clrscr;
write ('Введение количество записей: ');
readln(a);
clrscr;
for i:=1 to a do
with m do
begin
write ('ФИО: '); readln(fio);
write ('Группа: '); readln(group);
write ('Оценки: '); readln(score);
clrscr;
end;
end;
procedure OUT (var m: data_b; a: integer);
var i:integer;
begin
clrscr;
writeln ('Вывод данных: ');
for i:=1 to a do
with m do
writeln(fio,' ',group,' ',score);
repeat until keypressed;
end;
procedure OBR;
Вычислить среднее арифметическое по 4 экзаменам. Не знаю как реализовать. Без массивов.
writeln ('обработка выполнена');
readln;
clrscr;
end;
procedure info (var a: integer);
begin
clrscr;
writeln ('1-ввести записи');
writeln ('2-вывести записи');
writeln ('3-обработать записи');
writeln ('4-записать в файл');
writeln ('5-чтение из файла');
writeln ('6-выход');
writeln;
readln(a);
clrscr;
end;
procedure file_IN (var f: text; a: integer; m: data_b);
var i: integer;
begin
rewrite(f);
for i:=1 to a do
with m do
begin
write (f,fio,' ');
write (f,group,' ');
writeln (f,score,' ');
end;
close(f);
write ('База Данных сохранена в файл');
readln;
end;
procedure file_OUT (var f: text; var a: integer; var m: data_b);
var i,j,z,x: integer;
str: string;
ye: string[4];
begin
m:=db_zero;
reset(f);
i:=0; z:=0;
while (not eof(f)) do
begin
i:=i+1;
with m do
begin
readln(f,str);
for j:=1 to length(str) do begin
if (str[j]<>' ') and (z=0) then fio:=fio+str[j];
if (str[j]<>' ') and (z=1) then name:=group+str[j];
if (str[j]<>' ') and (z=2) then score:=score+str[j];
if str[j]=' ' then z:=z+1;
val(score,x);
end;
z:=0;
ye:='';
end;
end;
close (f);
a:=i;
write('Файл прочитан');
readln;
end;
begin
assign (f,'db.txt');
ext:=false;
info(oper);
repeat
case oper of
1: IN_1(db,kol_vo);
2: OUT(db,kol_vo);
3: OBR(db,kol_vo);
4: file_IN (f,kol_vo,db);
5: file_OUT (f,kol_vo,db);
6: ext:=true;
end;
if oper<>6 then info(oper);
clrscr;
until ext=true;
end.
Pascal, работа с файлами.
Имя объекта: Студент;
Поля записи: ФИО студента, группа, оценки по 4 экзаменам;
Задачи обработки: Подсчитать и вывести на экран средний балл, полученные каждым студентом группы X.
Нужно сделать без использования массивов.
Вот попробовал сделать задание:
Код:
Подскажите пожалуйста что здесь не правильно и как среднее арифметическое рассчитать.
Код:
a[1] + a[2] + ... + a [n-1] + a [n]
___________________________________
n
___________________________________
n