Вывести все слова, в которых буква "а" стоит на втором месте - 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 символов, и выводит все слова, в которых буква а стоит на втором месте.
Код выполняет следующие действия:
- #include
— подключает к программе стандартную библиотеку, позволяющую работать с консолью. - #include
— подключает к программе библиотеку, содержащую функции для работы со строками. - #define N 4 — определяет максимальное количество символов, которые могут быть в строке.
- char word[N + 1] = { 0 }; — создает массив для хранения считанных символов. Размер массива на единицу больше N, чтобы в конце строки можно было добавить нулевой символ.
- int ch = 0, len = 0, pos = 0; — инициализирует переменные, которые будут использоваться в цикле.
- while ((ch != '\n') && (ch != EOF)) { — начинает цикл, который будет выполняться до тех пор, пока не встретится символ новой строки или не будет достигнут конец файла.
- ch = getchar(); — считывает с консоли очередной символ.
- if (isalpha(ch)) { — проверяет, является ли считанный символ буквой.
- if (len < N) { — если длина строки меньше N, то добавляет символ в строку.
- word[len] = ch; — присваивает символ переменной word.
- len++; — увеличивает длину строки на единицу.
- if ((ch == 'a') && (pos == 0)) { — проверяет, является ли текущий символ буквой
аи находится ли она на втором месте. - pos = len; — если условие выполняется, то запоминает позицию
ав строке. - } — конец условия.
- else { — если встречен не буквенный символ.
- if ((len == N) && (pos == 2)) { — проверяет, является ли длина строки равной N и позиция
аравной 2. - printf(
%s,, word); — если условие выполняется, то выводит строку на экран. - len = pos = 0; — сбрасывает счетчики длины и позиции.
- } — конец условия.
- } — конец цикла.
- return 0; — завершает работу программы.