Напечатайте строку файла с наибольшим количеством слов - 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
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д