Предмет: Информатика, автор: anastasia09258

паскаль:
дан список фамилий учащихся. определите количество букв в самой длинной фамилии, выведите эти фамилии в файл


dimithras: список в файле или где дан?
anastasia09258: да, список в файле, на список можно внимания не обращать, главное - программа
dimithras: да понятно, но программа то должна его откуда-то брать )
anastasia09258: учащиеся в файле, файл в программе "мой офис" или как-то так ^^" нам просто объясняли, что программа сама возьмёт нужный файл, нужно только указать имя файла (assign (to, 'to.txt'); - вот так, например)
anastasia09258: assign (t, 't3.txt ') - вот

Ответы

Автор ответа: dimithras
1

Ответ:

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.


anastasia09258: если честно, 1ый раз в жизни вижу такие операторы/условия или как их там... да думаю мой информатик их не знает, тк маловероятно, что они есть в программе 10 класса. ничего не понятно, но очень интересно - как-то так. в любом случае, спасибо за потраченное время!))
dimithras: Ну да, вряд ли он поверит, что это школьник писал... С другой стороны, мне интересно как он предлагает узнать длину фамилии. Если по байтам, то есть морока с кодировкой и русские буквы будут считаться как две латинские. Задачка то хитрая оказалась.
anastasia09258: угу, и поручил он эту хитрую задачку не самой хитрой мне ;-; ладно.... ещё раз спасибо))
dimithras: если ответы здесь ищешь, значит уже хитрая!
anastasia09258: если бы))
dimithras: покажешь ему решение, которое "случайно" нашла в интернете и намекнёшь, почему такие задачи давать нельзя )
dimithras: Убрал всё что касается длины фамилий во втором варианте
anastasia09258: спасибо ‍♀️
anastasia09258: упс, смайл потерялся...
Похожие вопросы
Предмет: Английский язык, автор: khazeevazika