Программа для подсчета, сколько N-символьных слов (число N вводится пользователем) содержится во введенной строке символов - Pascal

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

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

нужна программа для подсчета, сколько N-символьных слов (число N вводится пользователем) содержится во введенной строке символов...

Решение задачи: «Программа для подсчета, сколько N-символьных слов (число N вводится пользователем) содержится во введенной строке символов»

textual
Листинг программы
program Project1;
 
(*Находит и подсчитывает в тексте aStr слова, состоящие ровно из aN символов.*)
function GetWords(const aStr : String; const aN : Word; var aWordCnt : Word) : String;
const
  (*Множество разделителей.*)
  Delims = [' ', '.', ',', ':', ';', '!', '?', '-', Char(9)];
var
  (*Индекс символов в строке.*)
  i : Integer;
  (*Индекс конца очередного слова.*)
  Pos2 : Integer;
  (*Отдельные слова в тексте.*)
  StrTmp : String;
  (*Результирующая строка.*)
  StrRes : String;
  (*Счётчик букв в слове.*)
  CharCnt : Word;
begin
  aWordCnt := 0;
  StrRes := '';
  StrTmp := '';
  CharCnt := 0;
  Pos2 := 0;
  for i := 1 to Length(aStr) do begin
    (*Если очередной символ является разделителем - пропускаем итерацию.*)
    if aStr[i] in Delims then Continue;
 
    (*Обрабатываем очередную букву слова.*)
    StrTmp := StrTmp + aStr[i];
    Inc(CharCnt);
    (*Отслеживаем конец слова.*)
    if i = Length(aStr) then
      Pos2 := i
    else if aStr[i + 1] in Delims then
      Pos2 := i
    ;
    (*Если конец слова найден.*)
    if Pos2 > 0 then begin
      if CharCnt = aN then begin
        if StrRes <> '' then StrRes := StrRes + ', ';
        StrRes := StrRes + StrTmp;
        Inc(aWordCnt);
      end;
      CharCnt := 0;
      StrTmp := '';
      Pos2 := 0;
    end; //if Pos2
  end; //for i
 
  GetWords := StrRes;
end;
 
var
  StrSrc, StrRes, StrTmp : String;
  N, WordCnt : Word;
begin
  repeat
    Writeln('Введите строку:');
    Readln(StrSrc);
    Writeln('Задайте количество символов в искомых словах:');
    Readln(N);
    StrRes := GetWords(StrSrc, N, WordCnt);
    Writeln('Слова, состоящие ровно из ', N:2, ' букв:');
    if WordCnt > 0 then
      Writeln(StrRes)
    else
      Writeln('Таких слов нет в заданном тексте.')
    ;
    Writeln('Повторить - ENTER. Выход - любой символ + ENTER.');
    Readln(StrTmp);
  until StrTmp <> '';
end.

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

В этом коде реализована функция подсчета слов в строке, состоящих из N символов. Функция принимает на вход строку, количество символов в искомых словах (N) и счетчик слов. Вводится строка, затем количество символов в искомых словах, после чего функция выводит список слов, состоящих из указанного количества символов. Список переменных и их значений:

  1. Delims - множество разделителей (пробел, точка, запятая, двоеточие, точка с запятой, восклицательный знак, вопросительный знак, дефис и символ табуляции)
  2. aStr - входная строка
  3. aN - количество символов в искомых словах
  4. aWordCnt - счетчик слов
  5. StrRes - результирующая строка
  6. StrTmp - временная строка
  7. CharCnt - счетчик букв в слове
  8. Pos2 - индекс конца слова
  9. i - индекс символа в строке
  10. WordCnt - счетчик слов
  11. StrSrc - входная строка
  12. StrRes - результирующая строка
  13. StrTmp - временная строка
  14. N - количество символов в искомых словах
  15. repeat - цикл, повторяющийся до тех пор, пока пользователь не введет пустую строку для завершения программы
  16. Readln - функция чтения строки с клавиатуры
  17. Writeln - функция вывода строки на экран
  18. until - условие цикла, выполняющееся до тех пор, пока пользователь не введет пустую строку для завершения программы
  19. StrTmp - временная строка
  20. Выход - любой символ, кроме пробела, завершающий программу.

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


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

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

12   голосов , оценка 4.25 из 5
Похожие ответы