Нахождение самого длинного слова в текстовом файле - Pascal

Узнай цену своей работы

Формулировка задачи:

написать программу нахождения самого длинного слова в текстовом файле и выводов всех слов наибольшей длины. Словом считать набор символов не содержащий пробелов и ограниченный пробелами началом/концы строки или знаками препинания Заранее Спасибо)) и еще "+" тому кто сделает блок -схему к этой задаче)

Решение задачи: «Нахождение самого длинного слова в текстовом файле»

textual
Листинг программы
  1. uses crt;
  2. const rz=[' ','.',',','-','?','!'];{символы, разделители слов, можно добавить}
  3. var f:text;
  4.     s,s1:string;
  5.     n,i,k,d,mx:byte;
  6. begin
  7. clrscr;
  8. assign(f,'text.txt');
  9. reset(f);{файл с текстом в папке с программой}
  10. {определяем максимальную длину слова}
  11. mx:=0;
  12. while not eof(f) do
  13.  begin
  14.   readln(f,s);
  15.   n:=length(s);
  16.   i:=1;
  17.   while i<=n do
  18.   if not(s[i] in rz)and ((i=1)or(s[i-1] in rz)) then{если не разделитель
  19.                          и первый или перед ним разделитель, то начало слова*}
  20.    begin
  21.     k:=i;
  22.     d:=0;
  23.     while (k<=n) and not(s[k] in rz) do {пока не разделитель и не конец строки}
  24.      begin
  25.       d:=d+1;
  26.       k:=k+1;
  27.      end;
  28.     if d>mx then mx:=d;
  29.     i:=i+d+1
  30.    end
  31.   else i:=i+1;{пропускаем разделители}
  32.  end;
  33. close(f);
  34. {ищем все слова максимальной длины}
  35. writeln('Максимальная длина слова=',mx);
  36. writeln('Это слова:');
  37. reset(f);
  38. while not eof(f) do
  39.  begin
  40.   readln(f,s);
  41.   n:=length(s);
  42.   i:=1;
  43.   while i<=n do
  44.   if not(s[i] in rz)and ((i=1)or(s[i-1] in rz)) then{если не разделитель
  45.                          и первый или перед ним разделитель, то начало слова*}
  46.    begin
  47.     k:=i;
  48.     s1:='';
  49.     while (k<=n) and not(s[k] in rz) do {пока не разделитель и не конец строки}
  50.      begin
  51.       s1:=s1+s[k];
  52.       k:=k+1;
  53.      end;
  54.     if length(s1)=mx then writeln(s1);
  55.     i:=i+length(s1);
  56.    end
  57.   else i:=i+1;{пропускаем разделители}
  58.  end;
  59. close(f);
  60. readln
  61. end.

Объяснение кода листинга программы

  1. Объявление переменных:
    • f - текстовый файл, содержащий текст text.txt
    • s - переменная для хранения строки текста
    • s1 - переменная для хранения отдельного слова из строки
    • n - количество символов в строке
    • i - счетчик для итерации по строке
    • k - счетчик для итерации по слову в строке
    • d - переменная для хранения длины слова
    • mx - переменная для хранения максимальной длины слова
  2. Открытие файла и определение максимальной длины слова:
    • Пока файл не закончится, считываем строку из файла
    • Получаем длину строки
    • Перебираем символы в строке, определяем границы слов и их длины
    • Обновляем значение переменной mx (максимальная длина слова)
  3. Вывод максимальной длины слова:
    • Выводим значение mx в консоль
    • Снова открываем файл
  4. Поиск слов максимальной длины:
    • Пока файл не закончится, считываем строку из файла
    • Получаем длину строки
    • Ищем слова, получаем их длину и выводим слова максимальной длины в консоль
  5. Закрытие файла и завершение программы:
    • Закрытие файла
    • Ожидание ввода пользователя (для сохранения вывода на экран)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы