Итоговый результат
Часть раздела Logic & Flow путешествия по C на Coddy — урок 24 из 63.
Задание
ЛегкоЗавершите свою программу для работы с текстом, объединив все функции, которые вы создали в предыдущих уроках, в единый комплексный вывод. Ваша программа должна:
- Запросить у пользователя ввод короткого предложения, выведя:
Enter a sentence:(без символа новой строки в конце — используйтеprintf("Enter a sentence: "), а неprintf("Enter a sentence: \n")) - Объявить символьный массив с именем
sentenceиз 200 элементов для хранения ввода - Использовать
scanfсо спецификатором формата%sдля чтения одного слова от пользователя - Сохранить исходное слово в отдельном символьном массиве для целей отображения
- Вычислить общее количество символов с помощью
strlen() - Подсчитать гласные, перебирая каждый символ и проверяя, совпадает ли он с любой гласной (a, e, i, o, u) как в нижнем, так и в верхнем регистре
- Преобразовать слово в верхний регистр с помощью функции
toupper()в цикле - Отобразить все результаты в чистом, организованном формате, где каждая часть информации находится на отдельной строке
Не забудьте включить заголовочный файл <string.h> для строковых функций и заголовочный файл <ctype.h> для функций преобразования символов.
Ваш вывод должен отображать все результаты в следующем точном формате:
Enter a sentence: Original: [word]
Characters: [count]
Vowels: [count]
Uppercase: [WORD]Важно: После приглашения Enter a sentence: не должно быть символа новой строки. Слово Original: появляется на той же строке сразу после считывания ввода.
Например, если ввод:
HelloВаш вывод должен быть:
Enter a sentence: Original: Hello
Characters: 5
Vowels: 2
Uppercase: HELLOЭта финальная задача объединяет все функции обработки текста, которые вы разработали на протяжении проекта: обработку ввода, подсчет символов с помощью strlen(), подсчет гласных с помощью циклов и условных операторов, а также преобразование в верхний регистр с помощью toupper(). Программа должна представлять чистый, организованный отчет о результатах анализа текста.
Попробуйте сами
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char sentence[200];
printf("Enter a sentence: ");
scanf("%s", sentence);
printf("You entered: %s\n", sentence);
int length = strlen(sentence);
printf("Character count: %d\n", length);
printf("Length: %d\n", length);
int vowel_count = 0;
for (int i = 0; i < length; i++) {
char c = sentence[i];
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
vowel_count++;
}
}
printf("Vowel count: %d\n", vowel_count);
printf("Uppercase: ");
for (int i = 0; i < length; i++) {
printf("%c", toupper(sentence[i]));
}
printf("\n");
return 0;
}Все уроки раздела Logic & Flow
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функции