Напечатайте строку файла с наибольшим количеством слов - Turbo Pascal
Формулировка задачи:
Дан текстовый файл f. Слова не переносятся с одной строки на другую. Слова разделены одним или несколькими пробелами. Напечатайте строку с наибольшим количеством слов. Если таких строк несколько, то напечатайте первые 10.
Решение задачи: «Напечатайте строку файла с наибольшим количеством слов»
textual
Листинг программы
- var
- s: array [1..10] of String;
- t: String;
- n, m, p, i: Integer;
- f: Text;
- begin
- Assign(f,'input.txt'); Reset(f);
- while not EoF(f) do begin
- ReadLn(f,t); p:=Ord(t[Lengthg(t)<>' ']);
- for i:=Length(t) downto 2 do Inc(p,Ord((t[i]=' ') and (t[i-1]<>' ')));
- if p>m then begin
- s[1]:=t; n:=1;
- end else if p=m then
- if n<10 then begin
- Inc(n); s[n]:=t;
- end;
- end;
- Close(f);
- for i:=1 to n do WriteLn(s[i]);
- end.
Объяснение кода листинга программы
- Создается переменная
s
, которая представляет собой массив строк. - Создается переменная
t
, которая будет содержать строку из файла. - Создаются переменные
n
,m
,p
иi
, которые будут использоваться для подсчета количества слов в строке. - Создается переменная
f
, которая представляет собой файл для чтения. - Открывается файл
f
. - Запускается цикл чтения строк из файла до конца файла.
- В каждой итерации цикла строка
t
считывается из файла. - Вычисляется порядковый номер слова в строке с помощью функции
Ord()
. - Если текущее слово имеет больше букв, чем предыдущее слово, то строка
t
добавляется в массивs
под индексом 1. - Если текущее слово имеет столько же букв, сколько и предыдущее слово, но это не последнее слово в строке, то переменная
n
увеличивается на 1, и строкаt
добавляется в массивs
под индексомn
. - После завершения цикла чтения файла, файл закрывается.
- Запускается цикл вывода строк из массива
s
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д