Дан текст, произвольной длины. Определить символ, встречающийся в тексте с максимальной частотой - C (СИ)
Формулировка задачи:
Помогите написать программы на языке С,с помощью scanf,printf и т.д.
1)Дан текст, произвольной длины. Определить символ, встречающийся в тексте с максимальной частотой.
2)Дана матрица размером n x m. Найти наибольший положительный и наименьший отрицательный элементы матрицы.
Решение задачи: «Дан текст, произвольной длины. Определить символ, встречающийся в тексте с максимальной частотой»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
//-----------------------------------------------------------------------------
int* GetChars(const char text[], int* chars) {
for (; *text; ++text) {
chars[(const unsigned char)(*text)]++;
}
return chars;
}
//-----------------------------------------------------------------------------
char GetFrequentChar(const char text[]) {
int chars[256] = { 0 };
int max = 0, i;
GetChars(text, chars);
for (i = 1; i < 256; ++i) {
if (chars[max] < chars[i]) {
max = i;
}
}
return max;
}
//-----------------------------------------------------------------------------
int main() {
printf("%c", GetFrequentChar("Hello World"));
return 0;
}
Объяснение кода листинга программы
- Создается функция
GetChars, которая принимает текст и массив для хранения количества повторений каждого символа. - В функции
GetCharsпроисходит итерация по каждому символу текста. - Для каждого символа увеличивается счетчик в соответствующем массиве.
- Функция возвращает массив символов.
- Создается функция
GetFrequentChar, которая принимает текст и возвращает символ с максимальной частотой. - В функции
GetFrequentCharсоздается массивcharsразмером 256 и инициализируется нулями. - Вызывается функция
GetCharsдля заполнения массиваchars. - В функции
GetFrequentCharпроисходит итерация по всем символам, начиная со второго (исключая нулевой символ). - Если количество повторений текущего символа больше, чем максимальное значение, то обновляется максимальное значение и индекс максимального значения.
- Возвращается максимальный символ.
- В функции
mainвызывается функцияGetFrequentCharс текстомHello World. - Результат выводится на экран.
- Программа возвращает 0, заканчивая свое выполнение.