Вывести все слова, в которых буква "а" стоит на втором месте - C (СИ)

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

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

Программа должна вывести все слова (Слова должны быть написаны латинскими буквами) в которых буква "а" стоит на втором месте и слово должно содержать только 4 буквы. Например если пользователь вводит слова: cat, dark, snow, salt, то программа выводит только: dark, salt (ввод слов пользователем не ограничен)

Решение задачи: «Вывести все слова, в которых буква "а" стоит на втором месте»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
 
#define N 4
 
int main() {
    char word[N + 1] = { 0 };
    int ch = 0, len = 0, pos = 0;
 
    while ((ch != '\n') && (ch != EOF)) {
        ch = getchar();
        if (isalpha(ch)) {
            if (len < N) {
                word[len] = ch;
            }
            len++;
            if ((ch == 'a') && (pos == 0)) {
                pos = len;
            }
        }
        else {
            if ((len == N) && (pos == 2)) {
                printf("%s, ", word);
            }
            len = pos = 0;
        }
    }
 
    return 0;
}

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

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

  1. #include — подключает к программе стандартную библиотеку, позволяющую работать с консолью.
  2. #include — подключает к программе библиотеку, содержащую функции для работы со строками.
  3. #define N 4 — определяет максимальное количество символов, которые могут быть в строке.
  4. char word[N + 1] = { 0 }; — создает массив для хранения считанных символов. Размер массива на единицу больше N, чтобы в конце строки можно было добавить нулевой символ.
  5. int ch = 0, len = 0, pos = 0; — инициализирует переменные, которые будут использоваться в цикле.
  6. while ((ch != '\n') && (ch != EOF)) { — начинает цикл, который будет выполняться до тех пор, пока не встретится символ новой строки или не будет достигнут конец файла.
  7. ch = getchar(); — считывает с консоли очередной символ.
  8. if (isalpha(ch)) { — проверяет, является ли считанный символ буквой.
  9. if (len < N) { — если длина строки меньше N, то добавляет символ в строку.
  10. word[len] = ch; — присваивает символ переменной word.
  11. len++; — увеличивает длину строки на единицу.
  12. if ((ch == 'a') && (pos == 0)) { — проверяет, является ли текущий символ буквой а и находится ли она на втором месте.
  13. pos = len; — если условие выполняется, то запоминает позицию а в строке.
  14. } — конец условия.
  15. else { — если встречен не буквенный символ.
  16. if ((len == N) && (pos == 2)) { — проверяет, является ли длина строки равной N и позиция а равной 2.
  17. printf(%s,, word); — если условие выполняется, то выводит строку на экран.
  18. len = pos = 0; — сбрасывает счетчики длины и позиции.
  19. } — конец условия.
  20. } — конец цикла.
  21. return 0; — завершает работу программы.

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


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

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

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