Напечатайте строку файла с наибольшим количеством слов - 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на экран.