Произвести в предложении поиск слова в котором будет наибольшее количество гласных букв - C (СИ)
Формулировка задачи:
Необходимо написать код на СИ.
Задание:Набрать с клавиатуры предложение и произвести в нем поиск слова в котором будет наибольшее количество гласных букв и вывести это слово.
Спасибо большое за внимание и поддержку!
Решение задачи: «Произвести в предложении поиск слова в котором будет наибольшее количество гласных букв»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
const char CDelim[] = " \t\n,..!?";
const char CVowel[] = "aeiouy";
char text[256];
char* ptr, * pcur, * pmax = NULL;
int max = 0, cnt;
printf("text: ");
fgets(text, sizeof(text), stdin);
ptr = strtok(text, CDelim);
while (ptr) {
cnt = 0;
for (pcur = ptr; *pcur; ++pcur) {
if (strchr(CVowel, tolower(*pcur))) {
cnt++;
}
}
if (max < cnt) {
pmax = ptr;
max = cnt;
}
ptr = strtok(NULL, CDelim);
}
if (pmax) {
printf("maximum vowels(%d) in '%s' word\n", max, pmax);
}
else {
printf("words with vowels not found\n");
}
return 0;
}
Объяснение кода листинга программы
В этом коде ищется слово в предложении, в котором содержится наибольшее количество гласных букв. Вот список действий, которые происходят в коде:
- Синтаксический анализ: В первых трех строках подключаются необходимые библиотеки.
- Инициализация переменных: В следующих строках объявляются и инициализируются необходимые переменные.
CDelim[]- это строка-разделитель, которая определяет символы, используемые в качестве разделителей в предложении (пробел, табуляция, перевод строки, точка, запятая, двоеточие, восклицательный знак, вопросительный знак).CVowel[]- это строка, содержащая гласные буквы (a, e, i, o, u, y).text[256]- это массив символов, в который считывается предложение.ptr,pcur,pmax- это указатели на символы в предложении.max- это счетчик, который отслеживает количество гласных букв в текущем слове.cnt- это счетчик, который отслеживает количество гласных букв в текущем слове.
- Получение предложения от пользователя: В следующей строке предложение считывается из стандартного ввода.
- Разбиение предложения на слова: В следующей строке предложение разбивается на слова с использованием функции
strtok(). Первый вызов этой функции возвращает первое слово в предложении, второй вызов - следующее слово, и так далее. - Подсчет гласных букв в каждом слове: Для каждого слова выполняется цикл, который проходит по каждому символу в слове. Если символ является гласной буквой, счетчик
cntувеличивается. - Поиск слова с наибольшим количеством гласных букв: После подсчета количества гласных букв в каждом слове, осуществляется поиск слова с наибольшим количеством гласных букв. Если такое слово найдено, указатель
pmaxуказывает на это слово, а переменнаяmaxсодержит количество гласных букв в этом слове. - Вывод результата: В последних строках кода выводится сообщение, указывающее, было ли найдено слово с наибольшим количеством гласных букв, и если да, то какое это слово и сколько в нем гласных букв. Вот список номеров и соответствующих действий:
- Подключение необходимых библиотек
- Инициализация переменных
- Считывание предложения от пользователя
- Разбиение предложения на слова
- Подсчет гласных букв в каждом слове
- Поиск слова с наибольшим количеством гласных букв
- Вывод результата