Распечатать все слова нечетной длины, имеющие не менее двух букв «а» - C (СИ)
Формулировка задачи:
Введена строка символов. Распечатать все слова нечетной длины, имеющие не менее двух букв «а».
Также если не сложно несколько объяснительных строк к каждой важно строке Заранее огромное спасибо!
Решение задачи: «Распечатать все слова нечетной длины, имеющие не менее двух букв «а»»
textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char str[BUFSIZ];
char *ptr, *p;
printf(">>");
fgets(str, BUFSIZ, stdin);
for (ptr = strtok(str, "\n\r\t ,.?!"); ptr; ptr = strtok(NULL, "\n\r\t ,.?!"))
if (strlen(ptr) % 2 == 1 && (p = strchr(ptr, 'a')) && strchr(p + 1, 'a'))
puts(ptr);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: stdlib.h, printf.h, string.h
- Объявление переменных:
- str[BUFSIZ] - строка, в которую считывается ввод пользователя
- ptr - указатель на текущий символ в строке
- p - указатель на второе вхождение символа 'a' в строке
- Вывод сообщения для ввода строки
- Считывание строки с помощью функции fgets()
- Разделение строки на отдельные слова с помощью функции strtok()
- Проверка условий для каждого слова:
- Длина слова должна быть нечетной (strlen(ptr) % 2 == 1)
- В слове должно быть минимум два символа 'a' (p = strchr(ptr, 'a')) и еще один символ 'a' после него (strchr(p + 1, 'a'))
- Если условия выполняются, то выводится слово
- Цикл продолжается до тех пор, пока не будут выполнены все условия
- Конец программы