//считаем русские и латинские буквы без цифр и пробелов
//просто посчитать размер строковой переменной нельзя
//т.к. русский алфавит будет в два раза больше латинского
//а фамилии могут быть написаны в перемешку
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.
1 votes Thanks 1
anastasia09258
если честно, 1ый раз в жизни вижу такие операторы/условия или как их там... да думаю мой информатик их не знает, тк маловероятно, что они есть в программе 10 класса. ничего не понятно, но очень интересно - как-то так. в любом случае, спасибо за потраченное время!))
dimithras
Ну да, вряд ли он поверит, что это школьник писал... С другой стороны, мне интересно как он предлагает узнать длину фамилии. Если по байтам, то есть морока с кодировкой и русские буквы будут считаться как две латинские. Задачка то хитрая оказалась.
anastasia09258
угу, и поручил он эту хитрую задачку не самой хитрой мне ;-; ладно.... ещё раз спасибо))
dimithras
если ответы здесь ищешь, значит уже хитрая!
Answers & Comments
Ответ:
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.