Работа со строками - 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, что означает успешное завершение работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д