Помогите плз решит задачку!!! значит ест текстовий файл в н строк, в каждой строке: фамилия имя оценки(например: Первий Вася 2 3 4). надо создат новий фаил, в котором, в каждой строке, будут: фамилия имя среднее арифметическоэ оценок(Прим.:Первий Вася 3). Заранее большое спасибо!!!!!!
program sraf; type celovek=record fam: string[6]; imia: string[2]; sredaf: real; end;
var scitat: text; novij: zmogus; zapisat: file of zmogus; ocenka, sum, sk: integer;
begin assign(scitat, 'C:\dannij.txt'); assign(zapisat, 'C:\rezultat.rez'); reset(scitat); rewrite(zapisat);
while not(eof(scitat))do begin read(scitat, novij.fam); sum:=0; sk:=0;
while not eoln (scitat) do begin read(scitat, novij.ocenka); sum:=sum+ocenka; sk:=sk+1; end; readln(scitat); novij.sredaf:=sum/sk; with (naujas) do writeln(novij.fam, ' ',novij.sredaf); end;
close(scitat); close(zapisat);
end.
тольк чёт не работает... покажите плз где ошибки?
klem4
22.12.2005 3:37
привер обработки одной строки :
uses crt; const s : string = 'Владимир Путин 2 3 3'; var i,e,n : integer; sr : single; begin i := 1; while(not(s[i] in ['2'..'5'])) do begin write(s[i]); inc(i); end; sr := 0; while(i<=length(s)) do begin if s[i] in ['2'..'5'] then begin val(s[i],n,e); sr := sr + n; end; inc(i); end; sr := sr/3; writeln(' : ',sr:2:2); readln end.
Гость
22.12.2005 23:33
спаибо спасибо! а как теперь сделат, чтоб он резултат(ну среднее арифметическое) в новий фаил записивал?
klem4
22.12.2005 23:56
reset(f_IN); rewrite(f_OUT); while(not(eof(f_IN))) do begin readln(f_IN, s) // тут делаешь что нужно со строкой; writeln(f_OUT, s); // после обработки, записываешь новую строку в другой файл end;
Гость
23.12.2005 5:37
ясненько... спасибо.... ага... но если ето(обработку информации) сделат не через массив, а сразу через файл? я вроде пробовала, и вроде обрабативает, но не работает...
Код
while not eoln (scitat) do begin read(scitat, novij.ocenka); sum:=sum+ocenka; sk:=sk+1; end; readln(scitat); novij.sredaf:=sum/sk;
klem4
23.12.2005 12:37
Так.. постойка, ты сказал что у тебя файл тектовый и состоит из строк ... елси у тебя файл типизированный , то все делается гораздо проще !
uses crt; const n=5; type TRec = record name : string; maks : array[1..3] of byte; sr : single; end; TBase = array[1..20] of TRec; TFile = file of TBase;
procedure Init(var b : TBase); var i,j : byte; begin for i := 1 to n do with b[i] do begin writeln('Rec ¹ ',i); write('name : '); readln(name); sr := 0; for j := 1 to 3 do begin write('maks ¹ ',j,' : '); readln(maks[j]); sr := sr + maks[j]; end; sr := sr/3; end; end; procedure ShowResult(b : TBase); var i : byte; begin for i := 1 to n do with b[i] do writeln(name,' ',sr:3:2); end;