Проверить, есть ли слова, начинающиеся и заканчивающиеся гласными - C (СИ)
Формулировка задачи:
дана строка(вводится с клавиатуры), в которой слова разделены пробелами, запятыми, табуляциями или границами строк. нужно вывести "да", если слова, начинающиеся и заканчивающиеся гласными, есть и "нет" - если нет
Помогите, прошу!
Решение задачи: «Проверить, есть ли слова, начинающиеся и заканчивающиеся гласными»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> int input_is_vs(FILE* _in){ int c, k, x, y; const char vs[] = "AEOIUY"; x = y = k = 0; while(((c = fgetc(_in)) != EOF) && !ferror(_in)){ if(isalpha(c)){ if(++k == 1) x = toupper(c); y = toupper(c); } else if(k > 0){ if((strchr(vs, x) != NULL) && (strchr(vs, y) != NULL)) return 1; k = x = y = 0; } if((c == '\n') || (c == '\r')) break; } return 0; } int main(void){ if(input_is_vs(stdin)) puts("yes."); else puts("not!"); return 0; }
Объяснение кода листинга программы
В этом коде проверяется, содержит ли вводимая строка слова, начинающиеся и заканчивающиеся гласными. Вот список действий, которые происходят в коде:
- Включаются необходимые заголовочные файлы:
stdio.h
для работы с вводом/выводомstring.h
для работы со строкамиctype.h
для работы с типами символов
- Определяется функция `input_is_vs
, которая принимает файловый дескриптор в качестве аргумента и проверяет, содержит ли вводимая строка слова, начинающиеся и заканчивающиеся гласными. Функция возвращает
1, если такие слова найдены, и
0` в противном случае. - В функции
input_is_vs
инициализируются следующие переменные:c
,k
,x
,y
- используются для отслеживания текущего символа, количества прочитанных символов, начального и конечного символов гласного словаvs
- массив, содержащий гласные буквы
- Переменные
x
,y
,k
инициализируются нулями - В цикле
while
считываются символы из файла до тех пор, пока не достигнут конец файла или не будет допущена ошибка при чтении - Если текущий символ является буквой, увеличивается счетчик
k
и считываются символыx
иy
(для отслеживания начального и конечного символов гласного слова) - Если
k
больше нуля и символыx
иy
являются гласными, функция возвращает1
- Если
k
больше нуля, символыx
,y
,k
сбрасываются в нули - Если текущий символ является символом новой строки или возврата каретки, цикл прерывается
- Функция
main
проверяет, содержит ли вводимая строка слова, начинающиеся и заканчивающиеся гласными, и выводит соответствующее сообщение на экран - Программа завершается без ошибок
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д