Программа для подсчета, сколько 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) и счетчик слов. Вводится строка, затем количество символов в искомых словах, после чего функция выводит список слов, состоящих из указанного количества символов. Список переменных и их значений:
- Delims - множество разделителей (пробел, точка, запятая, двоеточие, точка с запятой, восклицательный знак, вопросительный знак, дефис и символ табуляции)
- aStr - входная строка
- aN - количество символов в искомых словах
- aWordCnt - счетчик слов
- StrRes - результирующая строка
- StrTmp - временная строка
- CharCnt - счетчик букв в слове
- Pos2 - индекс конца слова
- i - индекс символа в строке
- WordCnt - счетчик слов
- StrSrc - входная строка
- StrRes - результирующая строка
- StrTmp - временная строка
- N - количество символов в искомых словах
- repeat - цикл, повторяющийся до тех пор, пока пользователь не введет пустую строку для завершения программы
- Readln - функция чтения строки с клавиатуры
- Writeln - функция вывода строки на экран
- until - условие цикла, выполняющееся до тех пор, пока пользователь не введет пустую строку для завершения программы
- StrTmp - временная строка
- Выход - любой символ, кроме пробела, завершающий программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д