Работа со строками - C (СИ) (70159)
Формулировка задачи:
Дан текст
1)Подчитать количество слов начинающихся с большой буквы.
2)Подсчитать количество слов, у которых первый и последний символы совпадают
3)Все пробелы заменить на тире("–")
Эксперты прошу Вашей помощи. Нужна программа на Си, которая объединяет все 3 задания
К первому заданию есть наброски
#include <conio.h> #include <stdio.h> #include <string.h> #include <ctype.h> #include <windows.h> int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); char str[100]; int count = 0,i; gets(str); for(i=0;str[i];i++) { if (isupper (str[i])); count++; } printf("%d", count); return 0; }
Решение задачи: «Работа со строками»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> int main() { char str[100]; int wordStart = -1; int wordIndex; int upperQnty = 0; int eqQnty = 0; fgets(str, 100, stdin); for (int i = 0; str[i]; i++) { if (str[i] == ' ') str[i] = '-'; if (wordStart > -1) { if (isalpha(str[i])) wordIndex++; else { if (str[wordStart] == str[wordStart + wordIndex]) eqQnty++; wordStart = -1; } } else if (isalpha(str[i])) { wordStart = i; wordIndex = 0; if (isupper(str[i])) upperQnty++; } } if (wordStart > -1) if (str[wordStart] == str[wordStart + wordIndex]) eqQnty++; printf("Кол-во слов начинающихся с большой буквы: %d\n", upperQnty); printf("Кол-во слов с одинаковыми символами на конце: %d\n", eqQnty); printf("Итоговая строка: %s\n", str); return 0; }
Объяснение кода листинга программы
- В начале программы подключаются две библиотеки: stdio.h и ctype.h. Библиотека stdio.h нужна для ввода-вывода данных, а ctype.h содержит функции для работы со строками.
- Затем определена переменная str типа char, которая является массивом символов. Его размер составляет 100 символов.
- Три переменные типа int: wordStart, wordIndex и eqQnty инициализируются значением -1. Переменная upperQnty инициализируется значением 0.
- Далее с помощью функции fgets() в массив str записывается строка, введенная пользователем.
- Затем в цикле перебираются все символы строки. Если текущий символ является пробелом, то он заменяется на символ
-
. - Если текущий символ не является первым символом строки и переменная wordStart не равна -1, то проверяется, является ли текущий символ буквой. Если это так, то увеличивается значение переменной wordIndex. Если текущий символ не является буквой, то проверяется, равен ли символ на позиции wordStart и wordIndex + 1. Если это так, то увеличивается значение переменной eqQnty. Затем переменная wordStart устанавливается в -1. Если текущий символ является первым символом строки, то устанавливается значение переменной wordStart и wordIndex, и если текущий символ является большой буквой, то увеличивается значение переменной upperQnty.
- Если значение переменной wordStart не равно -1 после цикла, то проверяется равенство символов на позиции wordStart и wordIndex + 1.
- Выводятся значения переменных upperQnty и eqQnty.
- Выводится итоговая строка, которая является входной строкой с замещенными пробелами на символ
-
. - Программа возвращает 0, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д