На диск записывается массив строк как один компонент. Считать из файла каждую строку поочередною. Найти во всех строках первые по порядку слова с максимальным количеством символов и записать эти слова в отдельный файл — Pascal(Паскаль)

uses crt;
const size=100;//макс размер массива
type mas=array[1..size] of string;//тип строковый массив
     fail=file of mas;//тип файла строковых массивов
procedure Slovo(s:string; var s1:string);//процедура нахождения макс слова
var mx,nmx,i,n,k:byte;
begin
s:=s+' ';//добавим пробел
mx:=0;nmx:=1;
i:=1;
while i<=length(s)do//пока не конец строки
if s[i]<>' ' then//если не пробел
 begin
  n:=i;k:=1;//смотрим это слово
  while s[n+k]<>' 'do//до следующего пробела
  k:=k+1;//по 1 символу
  if k>mx then//дошли до пробела, и если длиннее всех
    begin
     mx:=k;//макс длина
     nmx:=n;//номер индекса начала слова
    end;
  i:=i+k+1;//перепрыгиваем через это слово
 end
else i:=i+1;//иначе просто вперед
s1:=copy(s,nmx,mx);//копируем с позиции начала слова символы по его длине
end;
var f:fail;
    g:file of string;
    a:mas;
    sl:string;
    n,i:byte;
begin
clrscr;
assign(f,'massiv');
rewrite(f);
assign(g,'slova');
rewrite(g);
repeat
write('Размер массива до ',size,' n=');
readln(n);
until n in [1..size];
writeln('Создайте массив из ',n,' строк:');
for i:=1 to n do
 begin
  writeln('Строка ',i);
  readln(a[i]);
 end;
write(f,a);
clrscr;
writeln('Содержание файла массивов:');
reset(f);
read(f,a);
for i:=1 to n do
 begin
  writeln(a[i]);
  Slovo(a[i],sl);
  write(g,sl);
 end;
close(f);
writeln('Содержание файла максимальных слов:');
reset(g);
while not eof(g) do
 begin
  read(g,sl);
  write(sl,' ');
 end;
close(g);
readln
end.

Leave a Comment

87 − = 83