Написать программу на Си
Дан текст. Определить, каких букв в нем больше: строчных или прописных. Если больше прописных букв, заменить все строчные буквы прописными. Если больше строчных, заменить все прописные буквы строчными. Если количество прописных и строчных букв равно, текст оставить без изменения.
Answers & Comments
#include <string.h>#include <locale.h>#include <math.h>#include <stdio.h>#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; }}