Вывести на экран список слов с указанием их длины - C (СИ)
Формулировка задачи:
1. Задан текст, состоящий из отдельных слов. Длина текста - не более 80 символов. Исходный текст должен заканчиваться символом (’.’, ’!’, ’?’), слова разделены пробелами. Вывести на экран список слов с указанием их длины. Определить длину самого короткого и самого длинного слова. Вывести на экран эти слова с комментариями: самое длинное слово, самое короткое слово.
Программа должна предусматривать:
1. Вывод на экран информации о программе, а также, о ее разработчике.
2. Ввод текста с клавиатуры.
3. Вывод результата обработки текстовой строки.
4. Выход из программы.
Есть похожая программа. Кого заинтересует или захочет помочь я могу скинуть программу.
Пишите: <cut>
Решение задачи: «Вывести на экран список слов с указанием их длины»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define MAX_TEXT_LENGTH 80 #define DELIMETERS " .,?!" int main(void) { char textString[MAX_TEXT_LENGTH + 1]; char longestWord[MAX_TEXT_LENGTH + 1]; char shortestWord[MAX_TEXT_LENGTH + 1]; char* pch = NULL; char ch = 0; int canContinue = 0; int i = 0; do { printf("Enter text:\n"); memset(textString, 0, sizeof(textString)); memset(longestWord, 0, sizeof(longestWord)); memset(shortestWord, 0, sizeof(shortestWord)); if (fgets(textString, MAX_TEXT_LENGTH, stdin) != NULL) { if (textString[strlen(textString) - 1] == '\n') textString[strlen(textString) - 1] = '\0'; i = 0; pch = strtok(textString, DELIMETERS); while (pch != NULL) { i++; printf("Word [%02d]: '%s'\n", i, pch); if (i == 1) { strcpy(longestWord, pch); strcpy(shortestWord, pch); } if (strlen(pch) > strlen(longestWord)) { strcpy(longestWord, pch); } if (strlen(pch) < strlen(shortestWord)) { strcpy(shortestWord, pch); } pch = strtok(NULL, DELIMETERS); } printf("Shortest word: '%s' (length = %lu).\n", shortestWord, strlen(shortestWord)); printf("Longest word: '%s' (length = %lu).\n", longestWord, strlen(longestWord)); do { printf("Continue (y/n)?\n"); scanf(" %c", &ch); while ((i = getchar()) != '\n' && i != EOF); if (ch == 'y') { canContinue = 1; } else if (ch == 'n') { canContinue = 0; } else { printf("Input error!\n"); } } while ((ch != 'y') && (ch != 'n')); } } while (canContinue); printf("Developed by HighPredator!\n"); getchar(); return 0; }
Объяснение кода листинга программы
В этом коде на языке C реализован алгоритм, который позволяет пользователю ввести текст, а затем выводит список слов из этого текста вместе с их длиной. Список переменных:
- textString - строка, в которую пользователь вводит текст.
- longestWord - строка, в которую сохраняется самое длинное слово из введенного текста.
- shortestWord - строка, в которую сохраняется самое короткое слово из введенного текста.
- pch - указатель на текущий символ в тексте.
- ch - символ, который считывается с помощью сканера ввода.
- canContinue - флаг, который позволяет продолжать работу программы.
- i - счетчик, используемый в цикле. Список действий:
- Пользователю предлагается ввести текст.
- Если ввод некорректен (текст превышает максимально допустимую длину или содержит нежелательные символы), программа выводит сообщение об ошибке и просит ввести корректный текст.
- Текст разбивается на отдельные слова с помощью функции strtok.
- Каждое слово выводится на экран вместе с его длиной.
- Если это первое слово в тексте, оно сохраняется как самое длинное и самое короткое слово.
- Для каждого следующего слова проверяется его длина и, если оно длиннее или короче самого длинного или самого короткого слова, оно заменяет предыдущее самое длинное или самое короткое слово.
- После обработки всех слов программа выводит самое длинное и самое короткое слово.
- Пользователю предлагается продолжить работу с программой (ввод 'y' или 'n').
- Если пользователь вводит 'y', программа продолжает работу с шага 1.
- Если пользователь вводит 'n', программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д