Написать программу ** Си Дан текст. Определить, каких букв в нем больше: строчных или...

0 голосов
53 просмотров

Написать программу на Си
Дан текст. Определить, каких букв в нем больше: строчных или прописных. Если больше прописных букв, заменить все строчные буквы прописными. Если больше строчных, заменить все прописные буквы строчными. Если количество прописных и строчных букв равно, текст оставить без изменения.


Информатика (207 баллов) | 53 просмотров
0

наверно имеется ввиду заглавные буквы и маленькие буквы

0

да

0

Откуда берется текст?

Дан 1 ответ
0 голосов
Правильный ответ

На с++.
#include #include #include #include #define LANG 1 //Язык: 0 - английский; 1 - русскийsize_t kA = 0, ka = 0;int delta = (LANG) ? 'а' - 'А' : 'a' - 'A';void iter(char[], void(*)(char*), void(*)(char*));void incA(char* z = 0) { kA++; }void inca(char* z = 0) { ka++; }void changeA(char* ch);void changea(char* ch);int main() {setlocale(LC_ALL, "Russian");char str[] = "ПихАЙ СЮДА ИСХОднУЮ СТРОКУ СИмволов";iter(str, incA, inca);iter(str, changeA, changea);printf(str);return 0;}void iter(char str[], void(*trued)(char*), void(*falsed)(char*)) {for (size_t i = 0; i < strlen(str); ++i) { if (str[i] >= 'A' && str[i] <= 'Z' || str[i] >= 'А' && str[i] <= 'Я') trued(str+i); if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'а' && str[i] <= 'я') falsed(str + i);}}void changeA(char* ch) {if (kA < ka) { *ch = *ch + delta;}}void changea(char* ch) {if (kA > ka) { *ch = *ch - delta;}}


image
(6.9k баллов)