
На c++, пожалуйста Самая частая буква Дана строка, возможно, содержащая пробелы. Определите,
какая буква латинского алфавита (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются. При решении этой задачи нельзя пользоваться вложенными циклами. Входная строка должна обрабатываться за один проход. Входные данные Дана непустая строка. Выходные данные Программа должна вывести в первой строке все буквы, которые встречаются чаще всего в исходной строке. Выводить буквы необходимо в заглавном написании, в алфавитном порядке, без пробелов. Во второй строке выведите единственное число — сколько раз в данной строке встречаются эти буквы. Примеры Ввод Вывод - We all live in the Yellow Submarine! EL 5

Ответы на вопрос

Ответ:
#include <iostream>
#include <map>
using namespace std;
signed main() {
string s;
map<char,int> m;
int mx = 0;
getline(cin,s);
for(auto &i : s){
i = toupper(i);
if(i < 'A' || i > 'Z') continue;
m[i]++;
mx = max(mx, m[i]);
}
for(auto &i : m)
if(i.second == mx)
cout << i.first;
cout << "\n" << mx;
}
Объяснение:



Ответ:
#include <iostream>
#include <map>
using namespace std;
signed main(){
string s;
map<char,int> m;
int mx = 0;
getline(cin,s);
for(auto &i : s){
i = toupper(i);
if(i < 'A' || i > 'Z') continue;
m[i]++;
mx = max(mx, m[i]);
}
for(auto &i : m)
if(i.second == mx)
cout << i.first;
cout << "\n" << mx;
}



Вот C++ код для решения данной задачи:
cpp#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
int main() {
std::string input;
std::getline(std::cin, input);
// Преобразуем строку в нижний регистр для учета регистра
std::transform(input.begin(), input.end(), input.begin(), ::tolower);
// Создадим массив для подсчета частоты каждой буквы
int frequency[26] = {0};
for (char c : input) {
if (std::isalpha(c)) {
// Увеличиваем счетчик для соответствующей буквы
int index = c - 'a';
frequency[index]++;
}
}
// Найдем максимальное значение в массиве frequency
int maxFrequency = *std::max_element(frequency, frequency + 26);
// Выведем буквы, которые встречаются чаще всего
std::string mostFrequentLetters;
for (int i = 0; i < 26; i++) {
if (frequency[i] == maxFrequency) {
mostFrequentLetters += (char)('A' + i);
}
}
// Выводим результат
std::cout << mostFrequentLetters << std::endl;
std::cout << maxFrequency << std::endl;
return 0;
}
Этот код сначала преобразует строку в нижний регистр и затем подсчитывает частоту каждой буквы в строке. Затем он находит буквы, которые встречаются чаще всего, и выводит их в алфавитном порядке, а также количество раз, которое они встречаются.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili