Помогите решить задачу на С++

105
29 ноября 2020, 16:20

Дана последовательность из n слов. Для каждого элемента определить, сколько раз это слово встречалось в этой последовательности раньше ( на позициях с меньшим индексом). С++. Это в теме множества, словари еще не учили, проблема в том, что я не понимаю как с помощью контейнера multiset\set ввести семь слов?

int n;
cin >> n;
multiset <string> a;
for (int i = 0; i <= n; i++) { 
    string s; 
    getline(cin, s); 
    a.insert(s); }
for (auto s : a) { cout << s << endl; }
Answer 1

Если я Вас правильно понял, то это делается вот так:

#include <iostream>
#include <set>
using namespace std;
int main() { 
  int n;
  cin>>n;
  string s[n];
  int ans[n];
  multiset<string> st;
  for(int i = 0; i < n; i++) {
    cin>>s[i];
    ans[i] = st.count(s[i]);
    st.insert(s[i]);
  }
  for(int i = 0; i < n; i++) {
    cout<<s[i]<<": "<<ans[i]<<'\n';
  }
  return 0;
}

С помощью функции insert Вы добавляете элемент в multiset. А с помощью count, можно посчитать количество вхождений определенной строки в Вашем multiset

READ ALSO
Не срабатывает слот в Qt

Не срабатывает слот в Qt

У меня есть функция, которая вызывает слот:

117
Qt: как проверить query.value на нуль

Qt: как проверить query.value на нуль

Есть объект класса QSqlQuery queryВ query попадает результат некоторого запроса

109
Неполное высвобождение памяти

Неполное высвобождение памяти

Есть задача - реализовать двусвязный список(хранимые значения - целые числа) при помощи структурПри заполнении списка 10^7 значениями память...

131
Расчет стоимости на jquery

Расчет стоимости на jquery

Данный калькулятор рассчитывает цену проката авто в зависимости от сезона, на каждый из 3 сезонов задано 5 разных ценМне нужно усложнить его,...

136