Нахождение самого длинного слова в текстовом файле - Pascal
Формулировка задачи:
написать программу нахождения самого длинного слова в текстовом файле и выводов всех слов наибольшей длины. Словом считать набор символов не содержащий пробелов и ограниченный пробелами началом/концы строки или знаками препинания
Заранее Спасибо)) и еще "+" тому кто сделает блок -схему к этой задаче)
Решение задачи: «Нахождение самого длинного слова в текстовом файле»
textual
Листинг программы
- uses crt;
- const rz=[' ','.',',','-','?','!'];{символы, разделители слов, можно добавить}
- var f:text;
- s,s1:string;
- n,i,k,d,mx:byte;
- begin
- clrscr;
- assign(f,'text.txt');
- reset(f);{файл с текстом в папке с программой}
- {определяем максимальную длину слова}
- mx:=0;
- while not eof(f) do
- begin
- readln(f,s);
- n:=length(s);
- i:=1;
- while i<=n do
- if not(s[i] in rz)and ((i=1)or(s[i-1] in rz)) then{если не разделитель
- и первый или перед ним разделитель, то начало слова*}
- begin
- k:=i;
- d:=0;
- while (k<=n) and not(s[k] in rz) do {пока не разделитель и не конец строки}
- begin
- d:=d+1;
- k:=k+1;
- end;
- if d>mx then mx:=d;
- i:=i+d+1
- end
- else i:=i+1;{пропускаем разделители}
- end;
- close(f);
- {ищем все слова максимальной длины}
- writeln('Максимальная длина слова=',mx);
- writeln('Это слова:');
- reset(f);
- while not eof(f) do
- begin
- readln(f,s);
- n:=length(s);
- i:=1;
- while i<=n do
- if not(s[i] in rz)and ((i=1)or(s[i-1] in rz)) then{если не разделитель
- и первый или перед ним разделитель, то начало слова*}
- begin
- k:=i;
- s1:='';
- while (k<=n) and not(s[k] in rz) do {пока не разделитель и не конец строки}
- begin
- s1:=s1+s[k];
- k:=k+1;
- end;
- if length(s1)=mx then writeln(s1);
- i:=i+length(s1);
- end
- else i:=i+1;{пропускаем разделители}
- end;
- close(f);
- readln
- end.
Объяснение кода листинга программы
- Объявление переменных:
f
- текстовый файл, содержащий текстtext.txt
s
- переменная для хранения строки текстаs1
- переменная для хранения отдельного слова из строкиn
- количество символов в строкеi
- счетчик для итерации по строкеk
- счетчик для итерации по слову в строкеd
- переменная для хранения длины словаmx
- переменная для хранения максимальной длины слова
- Открытие файла и определение максимальной длины слова:
- Пока файл не закончится, считываем строку из файла
- Получаем длину строки
- Перебираем символы в строке, определяем границы слов и их длины
- Обновляем значение переменной
mx
(максимальная длина слова)
- Вывод максимальной длины слова:
- Выводим значение
mx
в консоль - Снова открываем файл
- Выводим значение
- Поиск слов максимальной длины:
- Пока файл не закончится, считываем строку из файла
- Получаем длину строки
- Ищем слова, получаем их длину и выводим слова максимальной длины в консоль
- Закрытие файла и завершение программы:
- Закрытие файла
- Ожидание ввода пользователя (для сохранения вывода на экран)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д