Работа со строками - C (СИ) (70159)

Узнай цену своей работы

Формулировка задачи:

Дан текст 1)Подчитать количество слов начинающихся с большой буквы. 2)Подсчитать количество слов, у которых первый и последний символы совпадают 3)Все пробелы заменить на тире("–") Эксперты прошу Вашей помощи. Нужна программа на Си, которая объединяет все 3 задания К первому заданию есть наброски
Листинг программы
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. #include <windows.h>
  6. int main()
  7. {
  8. SetConsoleCP(1251);
  9. SetConsoleOutputCP(1251);
  10. char str[100];
  11. int count = 0,i;
  12. gets(str);
  13. for(i=0;str[i];i++) {
  14. if (isupper (str[i]));
  15. count++;
  16. }
  17. printf("%d", count);
  18. return 0;
  19. }

Решение задачи: «Работа со строками»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4.  
  5. int main()
  6. {
  7.     char str[100];
  8.     int wordStart = -1;
  9.     int wordIndex;
  10.     int upperQnty = 0;
  11.     int eqQnty = 0;
  12.     fgets(str, 100, stdin);
  13.        
  14.     for (int i = 0; str[i]; i++) {
  15.         if (str[i] == ' ')
  16.             str[i] = '-';
  17.  
  18.         if (wordStart > -1) {
  19.             if (isalpha(str[i]))
  20.                 wordIndex++;
  21.             else {
  22.                 if (str[wordStart] == str[wordStart + wordIndex])
  23.                     eqQnty++;
  24.                 wordStart = -1;
  25.             }
  26.         } else if (isalpha(str[i])) {
  27.             wordStart = i;
  28.             wordIndex = 0;
  29.             if (isupper(str[i]))
  30.                 upperQnty++;
  31.         }
  32.     }
  33.     if (wordStart > -1)
  34.         if (str[wordStart] == str[wordStart + wordIndex])
  35.             eqQnty++;
  36.    
  37.    
  38.     printf("Кол-во слов начинающихся с большой буквы: %d\n", upperQnty);
  39.     printf("Кол-во слов с одинаковыми символами на конце: %d\n", eqQnty);
  40.     printf("Итоговая строка: %s\n", str);
  41.  
  42.     return 0;
  43. }

Объяснение кода листинга программы

  1. В начале программы подключаются две библиотеки: stdio.h и ctype.h. Библиотека stdio.h нужна для ввода-вывода данных, а ctype.h содержит функции для работы со строками.
  2. Затем определена переменная str типа char, которая является массивом символов. Его размер составляет 100 символов.
  3. Три переменные типа int: wordStart, wordIndex и eqQnty инициализируются значением -1. Переменная upperQnty инициализируется значением 0.
  4. Далее с помощью функции fgets() в массив str записывается строка, введенная пользователем.
  5. Затем в цикле перебираются все символы строки. Если текущий символ является пробелом, то он заменяется на символ -.
  6. Если текущий символ не является первым символом строки и переменная wordStart не равна -1, то проверяется, является ли текущий символ буквой. Если это так, то увеличивается значение переменной wordIndex. Если текущий символ не является буквой, то проверяется, равен ли символ на позиции wordStart и wordIndex + 1. Если это так, то увеличивается значение переменной eqQnty. Затем переменная wordStart устанавливается в -1. Если текущий символ является первым символом строки, то устанавливается значение переменной wordStart и wordIndex, и если текущий символ является большой буквой, то увеличивается значение переменной upperQnty.
  7. Если значение переменной wordStart не равно -1 после цикла, то проверяется равенство символов на позиции wordStart и wordIndex + 1.
  8. Выводятся значения переменных upperQnty и eqQnty.
  9. Выводится итоговая строка, которая является входной строкой с замещенными пробелами на символ -.
  10. Программа возвращает 0, что означает успешное завершение работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы