Определить чередуются ли в последовательности гласные и согласные буквы - C (СИ) (75654)

Узнай цену своей работы

Формулировка задачи:

Задав с клавиатуры последовательность символов, реализовать ее обработку, как указано в варианте. Исходные данные задать самостоятельно, учитывая специфику конкретного варианта. Количество символов в тексте не должно превышать 255 символов. Составить программу обработки набора символов (текста) с использованием данных типа char и стандартных функций обработки строк. Результат обработки и исходную последовательность вывести на эк-ран. В программе должны быть предусмотрены функции ввода исходных данных с проверкой на область допустимых значений, обработки текста.

Задание: Дана последовательность прописных (больших) латинских букв.Определить чередуются ли в последовательности гласные и согласные буквы.

Мож кто помочь с программой плиз...работа со строками ....буд оч. благодарен!!

Решение задачи: «Определить чередуются ли в последовательности гласные и согласные буквы»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
#define VOWELS "AEIOUY"
#define FOUND(a) ( strchr(VOWELS, (a)) != NULL )
 
void flush_input(void) {
    char c;
    while ( scanf("%c", &c) == 1 && c != '\n' )
        ;
}
 
typedef char string_t[256];
#define GET_UPPER(s) ( scanf("%255[A-Z]", (s)) == 1 )
 
int test(const char * s) {
    return ( *s == '\0' || *(s+1) == '\0' ) ? 1 : ( FOUND(*s) ^ FOUND(*(s+1)) ) ? test(s+1) : 0;
}
 
int main(void) {
    string_t str;
    
    while ( printf("String: ") && GET_UPPER(str) ) {
        printf("%s\n", ( test(str) ) ? "Ok" : "Fail");
        flush_input();
    }
}

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

В этом коде определен прототип функции test, которая принимает строку в качестве аргумента и возвращает значение типа int. Эта функция проверяет, чередуются ли гласные и согласные буквы в строке. Функция main содержит цикл, который запрашивает строку у пользователя, вызывает функцию test для этой строки и выводит результат на экран. Код использует макрос VOWELS, который содержит строку гласных букв (AEIOUY). Функция flush_input используется для очистки ввода от предыдущей строки. Тип данных string_t определен как массив символов (char) с максимальной длиной 256 символов. Макрос GET_UPPER используется для чтения строки, состоящей только из заглавных букв. В цикле while в функции main пользователю предлагается вводить строки до тех пор, пока он не введет пустую строку. После каждой итерации цикла вызывается функция flush_input, чтобы очистить ввод от предыдущей строки. Функция test проверяет, является ли текущий символ гласным (FOUND(*s)), и если да, то проверяет, является ли следующий символ согласным (FOUND(*(s+1))). Если эти условия выполняются, то функция рекурсивно вызывается для следующей строки (s+1). Если на каком-то шаге будет обнаружена пара гласных и согласных букв, то функция возвращает значение 1, иначе возвращается значение 0. Если в строке есть только одна буква или пара букв, функция возвращает 1, так как в этом случае условие *s == '\0' || *(s+1) == '\0' истинно. В конце каждой итерации цикла в функции main на экран выводится результат проверки строки на чередующиеся гласные и согласные буквы.

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


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

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

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