Проверить, есть ли слова, начинающиеся и заканчивающиеся гласными - 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;
}

Объяснение кода листинга программы

В этом коде проверяется, содержит ли вводимая строка слова, начинающиеся и заканчивающиеся гласными. Вот список действий, которые происходят в коде:

  1. Включаются необходимые заголовочные файлы:
    • stdio.h для работы с вводом/выводом
    • string.h для работы со строками
    • ctype.h для работы с типами символов
  2. Определяется функция `input_is_vs, которая принимает файловый дескриптор в качестве аргумента и проверяет, содержит ли вводимая строка слова, начинающиеся и заканчивающиеся гласными. Функция возвращает1, если такие слова найдены, и0` в противном случае.
  3. В функции input_is_vs инициализируются следующие переменные:
    • c, k, x, y - используются для отслеживания текущего символа, количества прочитанных символов, начального и конечного символов гласного слова
    • vs - массив, содержащий гласные буквы
  4. Переменные x, y, k инициализируются нулями
  5. В цикле while считываются символы из файла до тех пор, пока не достигнут конец файла или не будет допущена ошибка при чтении
  6. Если текущий символ является буквой, увеличивается счетчик k и считываются символы x и y (для отслеживания начального и конечного символов гласного слова)
  7. Если k больше нуля и символы x и y являются гласными, функция возвращает 1
  8. Если k больше нуля, символы x, y, k сбрасываются в нули
  9. Если текущий символ является символом новой строки или возврата каретки, цикл прерывается
  10. Функция main проверяет, содержит ли вводимая строка слова, начинающиеся и заканчивающиеся гласными, и выводит соответствующее сообщение на экран
  11. Программа завершается без ошибок

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы