Проверить, во всех ли словах буквы расположены в алфавитном порядке - C (СИ)
Формулировка задачи:
Решение задачи: «Проверить, во всех ли словах буквы расположены в алфавитном порядке»
#include <stdio.h> #include <limits.h> #include <string.h> int is_ordered(const char * s) { return ( ! *s ) ? INT_MAX : ( *s < is_ordered(s + 1) ) ? *s : 0; } #define DELIM " \t\n" int main(void) { char buf[BUFSIZ], * p; while ( printf("\nString: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' && printf("Unordered words: ") ) for ( p = strtok(buf, DELIM); p; p = strtok(NULL, DELIM) ) if ( ! is_ordered(p) ) printf("%s ", p); return 0; }
Объяснение кода листинга программы
В этом коде представлена функция is_ordered
, которая принимает строку и возвращает значение, указывающее, являются ли все буквы в строке упорядоченными (в порядке возрастания). Если первая буква не является 'a', то она возвращает INT_MAX
. В противном случае она рекурсивно вызывает саму себя с аргументом s + 1
до тех пор, пока не будет найдена первая несопоставимая буква (которая больше текущей). Если таковая найдена, функция возвращает ее значение. Если все буквы в строке упорядочены, функция возвращает 0.
В функции main
используется стандартный ввод для получения строки от пользователя. Затем эта строка разбивается на слова с использованием функции strtok
и условного оператора while
. Если слово не упорядочено (т.е. функция is_ordered
возвращает значение, отличное от 0), оно выводится на экран с помощью функции printf
.
Список переменных и их значений:
buf
- массив символов, используемый для хранения строки, введенной пользователемp
- указатель на текущее слово в строкеDELIM
- строка, используемая для разбиения строки на слова (пробел, табуляция, символ новой строки)is_ordered
- функция, проверяющая, являются ли все буквы в слове упорядоченнымиINT_MAX
- максимальное значение, которое может быть возвращено функциейis_ordered
в случае, если первая буква не является 'a'printf
- функция, используемая для вывода информации на экранfgets
- функция, используемая для чтения строки из стандартного вводаstrtok
- функция, используемая для разбиения строки на слова
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д