
ТОЛЬКО НА С++ ОЧЕНЬ СРОЧНО (ЕСТЬ ТАКАЯ ЗАДАЧА С ОТВЕТОМ НО ТАМ НЕ ПРАВИЛЬНО, ЕСЛИ СКОПИРУТЕТЕ ТОТ
ОТВЕТ - БАН, ОТДАЮ ВСЕ БАЛЛЫ) Самая частая буква Дана строка, возможно, содержащая пробелы. Определите, какая буква латинского алфавита (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются. При решении этой задачи нельзя пользоваться вложенными циклами. Входная строка должна обрабатываться за один проход. Входные данные Дана непустая строка. Выходные данные Программа должна вывести в первой строке все буквы, которые встречаются чаще всего в исходной строке. Выводить буквы необходимо в заглавном написании, в алфавитном порядке, без пробелов. Во второй строке выведите единственное число — сколько раз в данной строке встречаются эти буквы. Примеры Ввод - 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;
}
Объяснение:



Для решения этой задачи на языке C++, можно использовать следующий подход:
1. Создайте массив размером 26 (количество букв в латинском алфавите), где каждый элемент будет хранить количество вхождений каждой буквы. 2. Пробегите по входной строке и для каждой буквы увеличивайте соответствующий элемент в массиве. 3. Найдите максимальное значение в массиве, которое будет представлять количество вхождений самой часто встречающейся буквы. 4. Затем пробегите по массиву и выведите все буквы, которые имеют такое же количество вхождений, как и максимальное значение. 5. Выведите максимальное значение.
Вот пример кода, который реализует этот подход:
```cpp
#include
int main() { std::string s; std::cin >> s; int maxCount = 0; for (int i = 0; i < 26; ++i) { int count = 0; for (char c : s) { if (std::tolower(c) == 'a' + i) { ++count; } } if (count > maxCount) { maxCount = count; } } for (int i = 0; i < 26; ++i) { int count = 0; for (char c : s) { if (std::tolower(c) == 'a' + i) { ++count; } } if (count == maxCount) { std::cout << char('A' + i); } } std::cout << "\n" << maxCount << "\n"; return 0; } ```
Обратите внимание, что этот код использует функцию `std::tolower` для преобразования символов в нижний регистр перед сравнением с буквами алфавита. Это позволяет учесть, что заглавные и строчные буквы считаются одинаковыми.


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