• Предмет: Информатика
  • Автор: dashenkavorobyova
  • Вопрос задан 2 года назад

на c++, пожалуйста
Самая частая буква
Дана строка, возможно, содержащая пробелы. Определите, какая буква латинского алфавита (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются.

При решении этой задачи нельзя пользоваться вложенными циклами. Входная строка должна обрабатываться за один проход.

Входные данные

Дана непустая строка.

Выходные данные

Программа должна вывести в первой строке все буквы, которые встречаются чаще всего в исходной строке. Выводить буквы необходимо в заглавном написании, в алфавитном порядке, без пробелов. Во второй строке выведите единственное число — сколько раз в данной строке встречаются эти буквы.

Примеры
Ввод
Вывод
- We all live in the Yellow Submarine!
EL
5


dashenkavorobyova: уже не надо :) напишите просто что-нибудь, если 5 баллов надо :')
oooooooooooooooo10: а та решил 5
dashenkavorobyova: неа :'(
oooooooooooooooo10: если решишь кинешме ок
dashenkavorobyova: ага

Ответы

Ответ дал: oooooooooooooooo10
8

Ответ:

#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;

}

Объяснение:

Ответ дал: Dre4nt
4

Ответ:

#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;

}

Вас заинтересует