Вывести на экран все особые слова - C (СИ)
Формулировка задачи:
Дана последовательность символов, состоящая из слов. Назовем слово особым, если в него в любых сочетаниях входят четыре различные буквы. Вывести на экран все особые слова или сообщение «Нет», если особых слов нет.
Решение задачи: «Вывести на экран все особые слова»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h> #include <stdbool.h> #include <conio.h> int main() { const char CDelim[] = " \t\n,.?!"; bool find = false; char text[256]; const char* p; unsigned count = 0; int alph[26] = { 0 }; unsigned i = sizeof(alph) / sizeof(*alph); printf("text: "); fgets(text, sizeof(text), stdin); p = strtok(text, CDelim); while (p) { for (; *p; ++p) { if (isalpha(*p)) { alph[tolower(*p) - 'a']++; } } while (i--) { if (alph[i]) { count++; } } if (count==4) { printf("%s\n", p); find = true; } p = strtok(NULL, CDelim); } if (find == false) { printf("no ...\n"); } getch(); return 0; }
Объяснение кода листинга программы
В этом коде используется стандартная библиотека языка C для работы со строками, символами и массивами. Список действий, которые выполняются в коде:
- Включаются необходимые заголовочные файлы:
stdio.h
- для работы с функциями ввода-вывода;string.h
- для работы со строками;ctype.h
- для работы с символами;stdbool.h
- для работы с булевыми значениями;conio.h
- для работы с функциейgetch()
, которая используется для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.
- Определяются переменные и константы:
CDelim[]
- это строка, которая разделяет вводимый текст на отдельные слова;find
- это булево значение, которое изменяется в процессе выполнения программы и определяет, было ли найдено хотя бы одно особое слово;text
- это строка, в которую считывается ввод пользователя;p
- это указатель на текущее слово в тексте;count
- это счетчик, который подсчитывает количество найденных особых слов;alph
- это массив, в котором подсчитывается количество букв в каждом слове;i
- это индекс, используемый для итерации по массивуalph
.
- Считывается ввод пользователя:
- Пользователю предлагается ввести текст;
- Введенный текст считывается в строку
text
.
- Находится первое слово в тексте:
p
инициализируется значениемstrtok(text, CDelim)
;strtok()
- это функция, которая разделяет строку на слова и возвращает указатель на первое слово.
- Проверяется каждое слово на наличие букв:
- Если текущий символ является буквой, он учитывается в массиве
alph
; - Если текущий символ не является буквой, он игнорируется.
- Если текущий символ является буквой, он учитывается в массиве
- Подсчитывается количество слов с буквами:
- Инициализируется счетчик
count
равным 0; - Проверяется каждый элемент массива
alph
, если его значение больше 0, увеличивается счетчикcount
.
- Инициализируется счетчик
- Выводится первое найденное особое слово:
- Если
count
равен 4, это означает, что было найдено особое слово, и оно выводится на экран.
- Если
- Если особых слов не найдено, выводится сообщение об этом:
- Если
count
не равен 4, выводится сообщениеno ...
.
- Если
- Ожидается нажатие клавиши:
- Функция
getch()
приостанавливает выполнение программы до тех пор, пока пользователь не нажмет клавишу.
- Функция
- Завершается выполнение программы:
- Возвращается значение 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д