Замена в заданном предложении всех малых русских и латинских букв в соответствующие заглавные буквы - 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;
}
Объяснение кода листинга программы
- Преобразование регистра букв в строке в соответствии с таблицей.
- Вывод преобразованной строки.
- Обновление счетчика количества слов в строке.
- Обновление максимального количества слов в строке.
- Обновление счетчика строк.
- Проверка, является ли текущая строка последней введенной строкой.
- Получение строки от пользователя.
- Вывод количества слов в строке.
- Обновление счетчика количества слов в строке.
- Обновление максимального количества слов в строке.
- Сохранение предыдущего значения счетчика строк.
- Вывод сообщения о максимальном количестве слов в строке.
- Ожидание нажатия клавиши.
- Возврат значения 0.
- Включение кодировки Windows-1251 для консоли.
- Установка консоли в режим вывода на консоль с кодировкой Windows-1251.
- Объявление массива символов для хранения строки.
- Объявление переменных для хранения текущего и предыдущего символов строки.
- Объявление переменной для хранения текущего индекса строки.
- Объявление переменной для хранения количества слов в строке.
- Объявление переменной для хранения максимального количества слов в строке.
- Объявление переменной для хранения счетчика строк.
- Объявление переменной для хранения индекса строки с максимальным количеством слов.
- Объявление переменной для хранения строки, полученной от пользователя.
- Объявление функции для преобразования регистра букв в строке.
- Объявление функции для вывода строки на консоль.
- Объявление функции для получения строки от пользователя.
- Объявление функции для вывода количества слов в строке.
- Объявление функции для обновления максимального количества слов в строке.
- Объявление функции для вывода сообщения о максимальном количестве слов в строке.
- Объявление функции для ожидания нажатия клавиши.
- Объявление функции для возврата значения 0.
- Объявление функции для преобразования регистра букв в строке в соответствии с таблицей.
- Объявление функции для вывода преобразованной строки.
- Объявление функции для обновления счетчика количества слов в строке.
- Объявление функции для обновления максимального количества слов в строке.
- Объявление функции для проверки, является ли текущая строка последней введенной строкой.
- Объявление функции для получения строки от пользователя.
- Объявление функции для вывода количества слов в строке.
- Объявление функции для обновления счетчика количества слов в строке.
- Объявление функции для обновления максимального количества слов в строке.
- Объявление функции для вывода сообщения о максимальном количестве слов в строке.
- Объявление функции для ожидания нажатия клавиши.
- Объявление функции для возврата значения 0.