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