Форум программистов, компьютерный форум CyberForum.ru

Возможность вставки в map массива - C++

Восстановить пароль Регистрация
 
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
10.10.2015, 12:23     Возможность вставки в map массива #1
подскажите пожалуйста, могу ли я сделать значением map массив?
комментариями сверху выделено задание, ниже моя попытка реализации, которая не работает.
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
//Разработать программу, которая хранит информацию
//о школьниках и их оценках за 5 экзаменов в виде отображения(map).Каж -
//дый элемент отображения должен иметь следующий вид : ключ – фамилия
//ученика, значение – набор оценок за пять экзаменов.Реализовать вывод на
//экран среднего балла по всем экзаменам для каждого ученика.
#include "stdafx.h"
#include <iostream>
#include <iterator>
#include <map>
#include <string>
using namespace std;
 
void display(map <string, int[5]> p)
{
    for (auto it = p.begin(); it != p.end(); ++it)
    {
        int sum = 0;
        cout << (*it).first << " : ";
        for (int i = 0; i < 5; i++)
        {
            sum += (*it).second[i];
            cout << sum / 5;
        }
    }
}
 
void main()
{
    map <string, int[5]> pupil = 
    { 
        {"Jack", {1, 2, 3, 4, 5}},
        {"Sara", {2, 3, 4, 5, 6}},
        {"Gary", {4, 4, 2, 2, 6}},
        {"Luisa", {5, 5, 1, 1, 2}}
    };
    display(pupil);
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2015, 12:23     Возможность вставки в map массива
Посмотрите здесь:

C++ [C++]Объявление шаблона ассоциативного массива map
C++ Подскажите, как сделать сдвиг массива вправо для вставки нового элемента?
Задача на сортировку массива методом вставки на С++ C++
Метод, возвращающий данные по имеющемуся ключу массива MAP C++
C++ Выполнить сортировку одномерного массива методом вставки в список с вычислением адреса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
10.10.2015, 12:34     Возможность вставки в map массива #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
37
38
39
40
#include <iostream>
//#include <iterator>
#include <map>
#include <string>
using namespace std;
struct arr
{
    int mass[5];
};
typedef map<string,arr> mm;
 
void display(mm p)
{
    for (mm::iterator it = p.begin(); it != p.end(); ++it)
    {
        int sum = 0;
        cout << (*it).first << " : ";
        for (int i = 0; i < 5; i++)
        {
            sum += (*it).second.mass[i];
        }
        cout << sum /5.0<<endl;
    }
}
 
int main()
{
    mm pupil;
    arr  a={1, 2, 3, 4, 5};
    pupil["Jack"]=a;
    for(int i=0;i<5;i++)
        a.mass[i]=i+1;
    pupil["Order"]=a;
    for(int i=0;i<5;i++)
        a.mass[i]=1;
    pupil["Ones"]=a;
    display(pupil);
    system("pause");
    return 0;
}
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
10.10.2015, 12:42  [ТС]     Возможность вставки в map массива #3
zss, большое спасибо. пока что не до конца понимаю что происходит в main, но попытаюсь разобраться... кажется, надо садиться за stl
S_el
1909 / 1504 / 296
Регистрация: 15.12.2013
Сообщений: 5,929
10.10.2015, 13:14     Возможность вставки в map массива #4
Pari, если ваш компилятор поддерживает C++11 вместо оборачивания в структуру можно использовать std::array<>:

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
#include <iostream>
#include <map>
#include <string>
#include <array>
 
using mm = std::map<std::string,std::array<int,5>>;
 
void display(const mm &p)
{
    for(const auto &el:p)
    {
        double sum = 0;
        std::cout << el.first << " : ";
        for(const auto &p:el.second)
            sum += p;
        std::cout << sum /5.0<<std::endl;
    }
}
 
int main()
{
    mm pupil;
    std::array<int,5> a={1, 2, 3, 4, 6};
    pupil["Jack"]=a;
    for(int i=0;i<5;i++)
        a[i]=i+1;
    pupil["Order"]=a;
    for(int i=0;i<5;i++)
        a[i]=1;
    pupil["Ones"]=a;
    display(pupil);
 
    return 0;
}
http://ideone.com/Ff9hKd
gru74ik
Модератор
 Аватар для gru74ik
3131 / 1357 / 168
Регистрация: 20.02.2013
Сообщений: 3,877
Записей в блоге: 18
10.10.2015, 14:33     Возможность вставки в map массива #5
Pari, вернулись с джавы на С++?
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
10.10.2015, 17:30  [ТС]     Возможность вставки в map массива #6
S_el, да, поддерживает, VS2015
спасибо за такой вариант!

Добавлено через 55 секунд
gru74ik, ну, как вернулась) в универе продолжают долбить нас плюсами, с джавой придется пока повременить.
Yandex
Объявления
10.10.2015, 17:30     Возможность вставки в map массива
Ответ Создать тему
Опции темы

Текущее время: 16:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru