паскаль:
дан список фамилий учащихся. определите количество букв в самой длинной фамилии, выведите эти фамилии в файл
Ответы
Ответ:
program longest_familyname;
uses Sysutils,strings;
const IN_File = 'students.txt';
OUT_File = 'result.txt';
aa = 'а';
zz = 'я';
A = 'А';
Z = 'Я';
var fIn,fOut: TextFile;
s:string;
p:Pchar;
q,i,qmax:integer;
begin
qmax:=0;
assign(fIn, IN_File);
assign(fOut, OUT_File);
reset(fIn);
rewrite(fOut);
while not eof(fIn) do
begin
readln(fIn, s);
p:='';
StrPCopy(p,s);
q:=0;
for i:=0 to StrLen(p) do
begin
//считаем русские и латинские буквы без цифр и пробелов
//просто посчитать размер строковой переменной нельзя
//т.к. русский алфавит будет в два раза больше латинского
//а фамилии могут быть написаны в перемешку
if p[i] in [aa[1]..zz[1],A[1]..Z[1],'a'..'z','A'..'Z'] then q:=q+1;
end;
if qmax < q then qmax:=q;
writeln(fOut,s);
end;
Close(fIn);
Close(fOut);
writeln ('Самая длинная фамилия состоит из ', qmax, 'букв.')
end.
Решение без длины фамилий
program familynames;
uses Sysutils;
const IN_File = 'students.txt';
OUT_File = 'result.txt';
var fIn,fOut: TextFile;
s:string;
begin
assign(fIn, IN_File);
assign(fOut, OUT_File);
reset(fIn);
rewrite(fOut);
while not eof(fIn) do
begin
readln(fIn, s);
writeln(fOut,s);
end;
Close(fIn);
Close(fOut)
end.