Определить процентное содержание строчных и прописных букв к общему числу символов в тексте - C (СИ)
Формулировка задачи:
Дан текст (любой). Нужно определить процентное содержание строчных и прописных букв к общему числу символов в нем.
Помогите, пожалуйста, со строками вообще не дружу.
Решение задачи: «Определить процентное содержание строчных и прописных букв к общему числу символов в тексте»
textual
Листинг программы
#include <string.h>
#include <stdio.h>
void get_upper_lower_part(const char* str, float* upper, float* lower) {
int len = 0;
int u = 0;
int l = 0;
char c;
while (c = *str++) {
++len;
if (c >= 'A' && c <= 'Z') {
++u;
} else if (c >= 'a' && c <= 'z') {
++l;
}
if (len) {
*upper = u*100.0f/len;
*lower = l*100.0f/len;
}
}
}
int main() {
char str[] = "Hello world";
float upper = 0.0f;
float lower = 0.0f;
get_upper_lower_part(str, &upper, &lower);
printf("upper: %f\nlower: %f\n", upper, lower);
return 0;
}
Объяснение кода листинга программы
- В функции
get_upper_lower_partопределяются переменныеlen,uиlдля хранения количества символов, прописных букв и строчных букв соответственно. - Переменная
cиспользуется для хранения текущего символа в строкеstr. - В цикле
whileпроисходит проход по каждому символу в строкеstr. - Если символ
cявляется прописной буквой (большой), то увеличивается значение переменнойu. - Если символ
cявляется строчной буквой (маленькой), то увеличивается значение переменнойl. - Если длина строки
lenбольше 0, то вычисляется процентное содержание прописных и строчных букв и сохраняется в переменныхupperиlowerсоответственно. - В функции
mainопределяется тестовая строкаstrи инициализируются переменныеupperиlowerдля хранения результатов. - Вызывается функция
get_upper_lower_partс передачей адресов переменныхupperиlowerв качестве аргументов. - Результат выводится на экран с помощью функции
printf. - Функция
mainвозвращает 0, что означает успешное завершение программы.