Работа со строками - 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;
}

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

  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
Похожие ответы