Переписать слова, которые заканчиваются символом - C (СИ)
Формулировка задачи:
Прошу помощи с лабораторной работой
Переписать слова, которые заканчиваются символом ‘z’ и в которых отсутствуют символы десятичных цифр.
Само задание:
В исходной строке записаны слова через один или несколько пробелов. В начале и в конце строки также могут быть пробелы. Переписать в результирующую строку слова через один пробел. В начале и конце строки пробелов быть не должно. Слово это последовательность символов не равных пробелу. Если в исходной строке нет слов, удовлетворяющих поставленному условию, то результирующая строка пустая.
Решение задачи: «Переписать слова, которые заканчиваются символом»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #define DELIM ",.-;:!? \t\n" #define VOWELS "zZ" #define is_vowel(c) ( strchr(VOWELS, (c)) ) int main(void) { char * ptr, buf[BUFSIZ]; while (printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n') for (ptr = strtok(buf, DELIM); ptr; ptr = strtok(NULL, DELIM)) if (is_vowel(ptr[strlen(ptr) - 1])); printf("%s\n", ptr); return 0; }
Объяснение кода листинга программы
- Подключаются необходимые заголовочные файлы
- Определяются константы:
- DELIM - символ, который разделяет слова в строке (пробел, точка, запятая, дефис, точка с запятой, вопросительный знак, восклицательный знак, табуляция)
- VOWELS - строка, содержащая гласные буквы (в данном случае
zZ
, так как в коде реализована проверка на окончание слова на гласную букву)
- Определяется функция is_vowel, которая проверяет, является ли последний символ строки гласной буквой
- В основной функции программы объявляются указатель ptr и буфер buf
- В цикле while происходит запрос на ввод строки от пользователя и разделение этой строки на слова с помощью функции strtok. Каждое слово проверяется на окончание на гласную букву с помощью функции is_vowel. Если слово заканчивается на гласную букву, оно выводится на экран
- Завершается функция main, и программа заканчивает свою работу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д