Помогите плз решит задачку!!! значит ест текстовий файл в н строк, в каждой строке: фамилия имя оценки(например: Первий Вася 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'])) dobegin
write(s[i]);
inc(i);
end;
sr := 0;
while(i<=length(s)) dobeginif s[i] in ['2'..'5'] thenbegin
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))) dobegin
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 = recordname : string;
maks : array[1..3] of byte;
sr : single;
end;
TBase = array[1..20] of TRec;
TFile = fileof TBase;
procedure Init(var b : TBase);
var
i,j : byte;
beginfor i := 1to n dowith b[i] dobegin
writeln('Rec ¹ ',i);
write('name : '); readln(name);
sr := 0;
for j := 1to3dobegin
write('maks ¹ ',j,' : ');
readln(maks[j]);
sr := sr + maks[j];
end;
sr := sr/3;
end;
end;
procedure ShowResult(b : TBase);
var
i : byte;
beginfor i := 1to n dowith b[i] do writeln(name,' ',sr:3:2);
end;
var
f_in,f_out : TFile;
base : TBase;
begin
clrscr;
assign(f_in,'f_in.base');
rewrite(f_in);
Init(base);
write(f_in,base);
reset(f_in);
assign(f_out,'f_out.base');
rewrite(f_out);
read(f_in,base);
write(f_out,base);
close(f_in);
reset(f_out);
read(f_out, base);
ShowResult(base);
close(f_out);
readln
end.
основная чать такая большая для того чтобы ты показал что все данные записываешь , а потом читаешь из файлов.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.