Написать программу с комментарием - C (СИ)

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

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

Ввести строку, вывести только слова, заканчивающиеся на гласную букву.

Решение задачи: «Написать программу с комментарием»

textual
Листинг программы
void ptrf(char *s, int n) //Функция вывода строки фиксированой длины
{
    int i;
    for(i = 0; i < n;i++,++s)
        putchar(*s);
    putchar('\n');
}
void gets1(char *s) {
    int c;
    while((c = getchar()) != '\n') {
        *s = c;
        *++s;
    }
    *s = '\0';
}
int main() {
    char stroka[200];
    gets1(stroka);//Считываем нужную строку
    char *r = stroka;//Указатель указывает на первое stroka[0]
    int z = 0;//Здесь будет храниться длина слова
    while(1) {
        if(*r == ' '|| *r == '\0') {//Если символ равен пробелу или знаку пунктуации
            switch(*(r-z)) {//Проверяем гласная ли буква
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                ptrf(r-z, z); break;//Выводим слово по указателю, так как z - длина слова то начало слова - r-z
            }
            if(*r == '\0') break;
            ++r;
            z = 0;//Обнуляем длину слова
            continue;
        }
        z++;
        *++r;
    }
 
}

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

  1. В функции ptrf происходит вывод строки фиксированной длины.
  2. В функции gets1 считывается строка до символа новой строки.
  3. В функции main считывается строка с помощью gets1 и сохраняется в массиве stroka.
  4. Указатель r указывает на первый символ в stroka, а переменная z инициализируется нулем и используется для хранения длины слова.
  5. В бесконечном цикле while(1) проверяется, является ли текущий символ пробелом или знаком пунктуации.
  6. Если текущий символ является пробелом или знаком пунктуации, выполняется оператор switch, который проверяет, является ли предыдущая буква гласной.
  7. Если предыдущая буква является гласной, вызывается функция ptrf, которая выводит слово, начиная с указателя r-z и длиной z.
  8. Если текущий символ является символом новой строки, цикл прерывается.
  9. Если текущий символ не является пробелом или знаком пунктуации, увеличивается значение z, указывающее на длину слова, и текущий символ добавляется в конец слова.
  10. После каждой итерации цикла значение z сбрасывается в ноль, чтобы указать на новую строку.

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


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

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

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