Найти все слова, начинающиеся и кончающиеся согласными буквами - C (СИ)
Формулировка задачи:
Дана непустая последовательность слов (не более 30), в каждом слове не более восьми строчных латинских букв. Слова разделены запятой, за последним словом точка. Найти все слова, начинающиеся и кончающиеся согласными буквами.
Очень буду благодарен за помощь в решении! Спасибо.
Решение задачи: «Найти все слова, начинающиеся и кончающиеся согласными буквами»
textual
Листинг программы
#include <string.h>
#include <ctype.h>
int main() {
const char CDelim[] = " \t\n,.?!";
//const char CAlpha[] = "BCDFGHJKLMNPQRSTVWXZ";
const char alpha[] = "AEIOUYaeiouy";
char text[128];
char* str;
fgets(text, sizeof(text), stdin);
str = strtok(text, CDelim);
while (str != NULL) {
char first = str[0];
char last = str[strlen(str) - 1];
if (!strchr(alpha, first) && isalpha(first)
&& !strchr(alpha, last) && isalpha(last)) {
printf("-> %s\n", str);
}
str = strtok(NULL, CDelim);
}
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены две константные строки: CDelim и alpha.
- CDelim содержит символы-разделители (пробел, табуляция, перевод строки, запятая, точка, вопросительный знак, восклицательный знак).
- alpha содержит алфавит, состоящий только из гласных букв.
- Объявлена переменная text типа char, которая может хранить строку длиной до 128 символов.
- В эту переменную считывается строка из стандартного ввода (клавиатуры).
- В цикле while происходит обработка каждого слова из введенной строки.
- Сначала слово разбивается на две переменные: first (первый символ слова) и last (последний символ слова).
- Проверяется, являются ли первый и последний символы слова гласными (проверка с помощью функции isalpha и массива alpha).
- Если оба символа не являются гласными, то слово выводится на экран.
- В конце программы возвращается 0, что означает успешное выполнение программы.