Нахождение самого длинного слова в текстовом файле - 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.txts- переменная для хранения строки текстаs1- переменная для хранения отдельного слова из строкиn- количество символов в строкеi- счетчик для итерации по строкеk- счетчик для итерации по слову в строкеd- переменная для хранения длины словаmx- переменная для хранения максимальной длины слова
- Открытие файла и определение максимальной длины слова:
- Пока файл не закончится, считываем строку из файла
- Получаем длину строки
- Перебираем символы в строке, определяем границы слов и их длины
- Обновляем значение переменной
mx(максимальная длина слова)
- Вывод максимальной длины слова:
- Выводим значение
mxв консоль - Снова открываем файл
- Выводим значение
- Поиск слов максимальной длины:
- Пока файл не закончится, считываем строку из файла
- Получаем длину строки
- Ищем слова, получаем их длину и выводим слова максимальной длины в консоль
- Закрытие файла и завершение программы:
- Закрытие файла
- Ожидание ввода пользователя (для сохранения вывода на экран)