@Matef

Не получется вывести сколько одинаковых символов содержит строка?

Программка должна вычислять сколько одинаковых символов содержит предложение на C++

Вот что у меня получилось, но она не работает если ставить пробелы и все время нужно писать сколько символов содержит слово, пытался пофиксить это функцией strlen() но не помогла. Помогите расскажите что я делаю не так пожалуйста !?

Код:
#include <iostream>
 
 using namespace std;
 
int main()
{
    int num;
    cout << "Введите кол-во символов строки: ";
    cin >> num;
 
    int arr[256] = {}; // массив счетчиков символов
    char str[num]; // текст
    cout << "Введите текст: "; //Просим пользователя ввести текст
    cin >> str;

    
    // инкрементируем счетчик символа с помощью цикла
    for (int i = 0; i < num; ++i)
        ++arr[unsigned(str[i])];
 
    // находим индекс максимального счетчика
    int max = 0;
    for (int i = 1; i < 256; ++i)
        if (arr[max] < arr[i])
            max = i;
 
    cout << char(max) << " - " << arr[max] << endl;   // выводим символ и сколько раз встречается
    
}
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@galaxy
Что за странная манера писать на гибриде C и C++?

Пишите на плюсах - используйте std::string.
cin >> считывает до первого пробела, читайте через std::getline()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
myjcom
@myjcom Куратор тега C++
Без пробелов


Конец ввода это комбинация клавиш Ctrl + D в Linux и Ctrl + Z в Windows

#include <iostream>
#include <map>

using namespace std;

int main()
{
  map<char, int> table;
  char c = 0;

  while(cin >> c) table[c]++;

  for(auto [ch, cnt] : table)
  {
    cout << "symbol: '" << ch << "' count: " << cnt << "\n";
  }
}


С пробелами

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main()
{
  map<char, int> table;
  string s;
  getline(cin, s);

  for(char c : s) table[c]++;

  for(auto [ch, cnt] : table)
  {
    cout << "symbol: '" << ch << "' count: " << cnt << "\n";
  }
}



С выводом русских букв еще разобраться надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы