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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Pari
40 / 3 / 0
Регистрация: 24.11.2013
Сообщений: 139
#1

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

10.10.2015, 12:23. Просмотров 230. Ответов 5
Метки нет (Все метки)

подскажите пожалуйста, могу ли я сделать значением 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++ Объявление шаблона ассоциативного массива map
Задача на сортировку массива методом вставки на С++ C++
Метод, возвращающий данные по имеющемуся ключу массива MAP C++
C++ Выполнить сортировку одномерного массива методом вставки в список с вычислением адреса
Сортировка массива по возрастанию неоптимизированным алгоритмом вставки C++
Контейнер map с сохранением порядка вставки элементов C++
C++ Как реализовать код без применения ассоциативного массива (map)?
Эффективные алгоритмы вставки и удаления элемента из массива C++
Добавить в код возможность ввода диапазона массива C++
Получение значения элемента массива с помощью ассемблерной вставки C++
Возможность блокировки вставки текста или как правильно вставлять текст? C++
C++ Вывести состояние массива после каждой вставки на отдельных строках

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6127 / 5730 / 1853
Регистрация: 18.12.2011
Сообщений: 14,649
Завершенные тесты: 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
2065 / 1572 / 301
Регистрация: 15.12.2013
Сообщений: 6,206
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
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3857 / 1615 / 188
Регистрация: 20.02.2013
Сообщений: 4,644
Записей в блоге: 21
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 массива
Ответ Создать тему
Опции темы

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