Замена в заданном предложении всех малых русских и латинских букв в соответствующие заглавные буквы - C (СИ)

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

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

Разработать функцию, которая осуществляет замену в заданном предложении всех малых русских и латинских букв в соответствующие заглавные буквы и возвращает количество слов в этом предложении. С клавиатуры ввести несколько предложений. Используя разработанную функцию, напечатать все введенные предложения большими буквами. В конце указать, какое предложение состоит из наибольшего количества слов. Подсказка: в функции воспользоваться массивами больших и строчных букв русского алфавита.
#include "stdafx.h"
#include "stdio.h"
#include "ctype.h"
#include "string.h"
#include "conio.h"
 
int main() {
    char string[255];
    int i;
    puts("Enter the string");
    gets_s(string);
    int kst_smb=strlen(string);
        for(i=0; i<kst_smb; i++) 
                string[i]=toupper(string[i]);
                printf("%s", string);
    _getch();
    return 0;
С латинскими сумел, а как с русскими быть, помогите доработать программу.

Решение задачи: «Замена в заданном предложении всех малых русских и латинских букв в соответствующие заглавные буквы»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
 
#pragma warning (disable: 4996)
 
int ChangingCase(char* str)
{
    char *Big = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЭЮЯ";
    char *Small = "абвгдежзийклмнопрстуфхцчшщьэюя";
    char *pointer, *pl;
    int CountOfWords = 1, i;
    for (pl=str; *pl!='\0';pl++)
    {
        pointer=strchr(Small,*pl);
        if (pointer!=NULL)
            *pl=Big[pointer-Small];
        else
            *pl=toupper(*pl);
    }
    int len = strlen(str);
    for (i=0; i<len; i++)     
        if ((str[i]==' ') && (str[i+1]!=' '))
            CountOfWords++;
    return CountOfWords;
}
 
int main() 
  {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char string[127];
    int Counter = 0, IndMax = 0, CountOfWords, MaxCW = 0;
    printf("Enter the strings, 0 - end of input\n");
    do
    {
        gets(string);
        Counter++;
        CountOfWords = ChangingCase(string);
        puts(string);
        if(CountOfWords > MaxCW)
        {
            MaxCW = CountOfWords;
            IndMax = Counter;
        }
        //printf("%d %d\n", CountOfWords, IndMax);
    } while(*string != '0');
    printf("Max sentence is %d\n", IndMax);
    getch();
    return 0;
}

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

  1. Преобразование регистра букв в строке в соответствии с таблицей.
  2. Вывод преобразованной строки.
  3. Обновление счетчика количества слов в строке.
  4. Обновление максимального количества слов в строке.
  5. Обновление счетчика строк.
  6. Проверка, является ли текущая строка последней введенной строкой.
  7. Получение строки от пользователя.
  8. Вывод количества слов в строке.
  9. Обновление счетчика количества слов в строке.
  10. Обновление максимального количества слов в строке.
  11. Сохранение предыдущего значения счетчика строк.
  12. Вывод сообщения о максимальном количестве слов в строке.
  13. Ожидание нажатия клавиши.
  14. Возврат значения 0.
  15. Включение кодировки Windows-1251 для консоли.
  16. Установка консоли в режим вывода на консоль с кодировкой Windows-1251.
  17. Объявление массива символов для хранения строки.
  18. Объявление переменных для хранения текущего и предыдущего символов строки.
  19. Объявление переменной для хранения текущего индекса строки.
  20. Объявление переменной для хранения количества слов в строке.
  21. Объявление переменной для хранения максимального количества слов в строке.
  22. Объявление переменной для хранения счетчика строк.
  23. Объявление переменной для хранения индекса строки с максимальным количеством слов.
  24. Объявление переменной для хранения строки, полученной от пользователя.
  25. Объявление функции для преобразования регистра букв в строке.
  26. Объявление функции для вывода строки на консоль.
  27. Объявление функции для получения строки от пользователя.
  28. Объявление функции для вывода количества слов в строке.
  29. Объявление функции для обновления максимального количества слов в строке.
  30. Объявление функции для вывода сообщения о максимальном количестве слов в строке.
  31. Объявление функции для ожидания нажатия клавиши.
  32. Объявление функции для возврата значения 0.
  33. Объявление функции для преобразования регистра букв в строке в соответствии с таблицей.
  34. Объявление функции для вывода преобразованной строки.
  35. Объявление функции для обновления счетчика количества слов в строке.
  36. Объявление функции для обновления максимального количества слов в строке.
  37. Объявление функции для проверки, является ли текущая строка последней введенной строкой.
  38. Объявление функции для получения строки от пользователя.
  39. Объявление функции для вывода количества слов в строке.
  40. Объявление функции для обновления счетчика количества слов в строке.
  41. Объявление функции для обновления максимального количества слов в строке.
  42. Объявление функции для вывода сообщения о максимальном количестве слов в строке.
  43. Объявление функции для ожидания нажатия клавиши.
  44. Объявление функции для возврата значения 0.

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


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

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

13   голосов , оценка 4.077 из 5
Похожие ответы