Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Almaz97
0 / 0 / 0
Регистрация: 16.08.2017
Сообщений: 8
1

решение задачи с map

19.08.2017, 16:04. Просмотров 422. Ответов 2
Метки нет (Все метки)

Всем привет!
Есть задача:
1.Первая строка содержит N - кол-во строк
2.Далее следует N строк по одному слову в каждой строке
3.Дальше Q - кол-во запросов
4.Далее следует Q строк по одному слову в каждой строке - запрос

4
aba
baba
aba
xzxb

3
aba
xzxb
ab

Например запрос первая строка это aba нужно найти сколько aba было введено и так далее

Ответ примера:
2 // 2 раза введено aba
1 // 1 раз введен xzxb
0 // такого слова не было введено

Так вот у меня есть идея решить эту задачу с помощью map , далее мой код , только не знаю один момент как сделать.Первый цикл for вводит все слова , я там сразу проверяю если нет в map еще не было введено такого слова то я его ввожу в map как нового и второе значение в map ставлю 1 , а в противном случае мне нужно второе значение в map увеличивать на 1, и тогда при запросе какого то слова сразу получу кол-во , надеюсь понятно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<iostream>
#include<conio.h>
#include<vector>
#include<string>
#include<map>
 
using namespace std;
 
int main(){
 
    int N, Q;
    vector<string> str, str2;
    vector<int> sum;
    map<string, int> mymap;
    int a;
 
    cin >> N;
 
    str.resize(N);
 
    for (int i(0); i < N; i++){
        cin >> str[i];
        if (mymap.find(str[i]) != mymap.end())
            mymap.insert(pair<string, int>(str[i], 1)); // если нет такого слова то он добавляется в map как первый , ключ - слово , и int  - для подсчета кол - во слов
        else
                        // не знаю что писать сюда
    }
 
    cin >> Q; // кол - во запроса
    str2.resize(Q); 
 
    for (int i(0); i < Q; i++){
        cin >> str2[i]; // запрос слова
        sum.push_back(mymap[str2[i]]);  // при наличии такого слова в др вектор добавляю сразу кол-во 
        
    }
 
    
 
    _getch();
    return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2017, 16:04
Ответы с готовыми решениями:

Обращение к элементам vector, который находится в map, находящийся в map
Всем добрый день! Имеется такой контейнер. Как обращаться к элементам вектора и как пушбэчить...

Поместить вектора в map и реализовать перегрузку вывода для map
Всем привет! Нужна помощь в написании программы. У меня есть вот такая прога и мне нужно каким-то...

Решение задачи
Доброго времени суток! Очень глупый, уверен, для Вас вопрос, но мне задали задачу, решить пример:...

Решение задачи
Для проффесионалов, я думаю, это будет очень легко. Условие, собственно, таково: Требуется...

Решение задачи
Как решить задачу: поменять местами второй четный со вторым нечетным в одномерном массиве

2
Croessmah
++Ͻ
15803 / 8937 / 1719
Регистрация: 27.09.2012
Сообщений: 21,957
Записей в блоге: 2
Завершенные тесты: 2
19.08.2017, 16:34 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//g++  5.4.0
 
#include <iostream>
#include <string>
#include <map>
 
int main()
{
    typedef std::map<std::string, std::size_t> map_type;
    map_type m;
    std::size_t N = 0;
    std::size_t Q = 0;
    std::string word;
    std::cin >> N;
    for (std::size_t i = 0; i < N; ++i) {
        std::cin >> word;
        ++m[word];
    }
    std::cin >> Q;
    for (std::size_t i = 0; i < Q; ++i) {
        std::cin >> word;
        std::size_t count = 0;
        map_type::const_iterator it = m.find(word);   
        if (it != m.end()) {
            count = it->second;
        }
        std::cout << count << "\n";
    }
    /*
    цикл можно сократить до:
    for (std::size_t i = 0; i < Q; ++i) {
        std::cout << m[word] << "\n";
    }
    но это приведет к вставке новых элементов в map
    */
}
http://rextester.com/SRIZ97796

Что не понятно, спрашивайте.
1
Almaz97
0 / 0 / 0
Регистрация: 16.08.2017
Сообщений: 8
19.08.2017, 17:49  [ТС] 3
оказывается то что спрашивал в 20 строк - это ++m[word]! )))) Croessmah, спасибо вам большое теперь буду знать
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2017, 17:49

Решение задачи
Помогите, пожалуйста! Решить задачу в С++, только с использованием цикла. Вывести на экран: ...

Решение задачи
Нужна помощь в решении задачи. Прошу помочь надеюсь в вашей поддержке:( прошу решить задачу

Решение задачи c++
Написать программу вычисляющую значение функции y=√(9-x*x) на задонном орезке с заданным шагом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru