Задача:
Создайте функцию, которая принимает строку и возвращает количество слов, которые начинаются на заданную букву. Pascal.
План:
- Алгоритм решения
- Код программы
- Примеры входных данных и ожидаемых результатов
- Объяснение кода программы
- Блок-схема
Алгоритм решения:
-
Определение функции
CountWordsStartingWith
, принимающей текст и букву. -
Инициализация переменных:
count
: счетчик словword
: текущее слово
-
Цикл по каждому символу в тексте:
- Если символ не пробел, добавить его к текущему слову
- Если символ пробел:
- Проверить, начинается ли слово с заданной буквы (без учета регистра)
- Если да, увеличить счетчик
- Сбросить текущее слово
-
После цикла проверить последнее слово:
- Если оно не пустое и начинается с заданной буквы, увеличить счетчик
-
Вернуть значение счетчика
-
В основной программе:
- Запросить ввод текста
- Запросить ввод буквы
- Вызвать функцию
CountWordsStartingWith
- Вывести результат
Код программы на языке Pascal:
Код Pascal
function CountWordsStartingWith(text: string; letter: char): integer;
var
count, i: integer;
word: string;
begin
count := 0;
word := '';
for i := 1 to Length(text) do
begin
if text[i] <> ' ' then
word := word + text[i]
else
begin
if (Length(word) > 0) and (UpCase(word[1]) = UpCase(letter)) then
Inc(count);
word := '';
end;
end;
if (Length(word) > 0) and (UpCase(word[1]) = UpCase(letter)) then
Inc(count);
CountWordsStartingWith := count;
end;
var
inputText: string;
startLetter: char;
result: integer;
begin
Write('Enter a string: ');
ReadLn(inputText);
Write('Enter a letter: ');
ReadLn(startLetter);
result := CountWordsStartingWith(inputText, startLetter);
WriteLn('Number of words starting with ''', startLetter, ''': ', result);
end.
Примеры входных данных и ожидаемых результатов:
Input:
Enter a string: The quick brown fox jumps over the lazy dog
Enter a letter: t
Output:
Number of words starting with 't': 2
---
Input:
Enter a string: Hello World How Are You
Enter a letter: H
Output:
Number of words starting with 'H': 3
---
Input:
Enter a string: Programming is fun and challenging
Enter a letter: f
Output:
Number of words starting with 'f': 1
---
Input:
Enter a string: Apple Banana Cherry Date Elderberry
Enter a letter: C
Output:
Number of words starting with 'C': 1
---
Input:
Enter a string: ZigZag Zebra Zoo Zeppelin
Enter a letter: z
Output:
Number of words starting with 'z': 4
Объяснение кода программы:
-
Объявление функции:
Объявляется функция, принимающая строкуfunction CountWordsStartingWith(text: string; letter: char): integer;
text
и символletter
, возвращающая целое число. -
Объявление локальных переменных:
Объявляются переменные:var count, i: integer; word: string;
count
для подсчета слов,i
для цикла,word
для хранения текущего слова. -
Инициализация переменных:
Счетчик слов и текущее слово обнуляются.count := 0; word := '';
-
Цикл по символам строки:
Перебираются все символы входной строки.for i := 1 to Length(text) do
-
Обработка символов:
Если символ не пробел, добавляется к текущему слову. Если пробел, проверяется начальная буква слова и увеличивается счетчик при совпадении.if text[i] <> ' ' then word := word + text[i] else begin if (Length(word) > 0) and (UpCase(word[1]) = UpCase(letter)) then Inc(count); word := ''; end;
-
Проверка последнего слова:
Обрабатывается последнее слово, если строка не заканчивается пробелом.if (Length(word) > 0) and (UpCase(word[1]) = UpCase(letter)) then Inc(count);
-
Возврат результата:
Функция возвращает количество подходящих слов.CountWordsStartingWith := count;
-
Объявление переменных основной программы:
Объявляются переменные для входных данных и результата.var inputText: string; startLetter: char; result: integer;
-
Ввод данных:
Пользователь вводит строку и начальную букву.Write('Enter a string: '); ReadLn(inputText); Write('Enter a letter: '); ReadLn(startLetter);
-
Вызов функции и вывод результата:
Вызывается функция и выводится результат.result := CountWordsStartingWith(inputText, startLetter); WriteLn('Number of words starting with ''', startLetter, ''': ', result);