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

Контейнер multimap. Обратный вывод - C++

Восстановить пароль Регистрация
 
triadec_96
 Аватар для triadec_96
11 / 11 / 0
Регистрация: 27.12.2012
Сообщений: 429
Завершенные тесты: 1
26.12.2013, 16:51     Контейнер multimap. Обратный вывод #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
#include <iostream>
#include <conio.h>
#include <map>
#include <clocale>
#include <fstream>
#include <string>
using namespace std;
void main()
{
    setlocale(LC_ALL,"Russia");
    
    
    multimap<int,string> m;
    ifstream f("Text.txt");
    string str;
    int a[3],k=0,b[255],i,q=0;
    while(!f.eof())
    {f>>str;f>>a[0];//считывание фамилии и оценок
    f>>a[1];f>>a[2];
    k=(a[0]+a[1]+a[2])/3;//подсчёт среднего бала
    m.insert(pair <int,string> (k,str));q++;}
 
    multimap<int,string>::iterator it;
    for(it=m.begin(),i=0;it!=m.end();it++,i++)//подсчёт качественного показателя
        b[i]=it->first*3/0.15;
    multimap<int,string>::reverse_iterator it1; 
    for(it1=m.rbegin(),i=q;it1!=m.rend();it1--,i--)//вывод по убыванию
    cout<<it->first<<"\t"<<it->second<<"\t\t"<<b[i]<<"%"<<endl;
    getch();
}
Я так понимаю ,что проблема с выводом,ведь когда я писал программу сначала я написал обычный вывод (по возрастанию,ведь меп сортирует автоматически),то никаких ошибок небыло.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2013, 16:51     Контейнер multimap. Обратный вывод
Посмотрите здесь:

C++ STL multimap.
сортировка в multimap C++
неверное выполнение multimap C++
C++ контейнер <list> вывод содержимого
C++ multimap
Multimap зацикливается C++
C++ multimap::emplace()
Multimap. Ошибка operator+ not implemented in type multimap C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
26.12.2013, 18:13     Контейнер multimap. Обратный вывод #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
41
42
43
44
45
46
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <string>
#include <set>
#include <boost/lexical_cast.hpp>
 
struct Student
{
    std::string name;
    std::array<int, 3> marks;
    friend bool operator < (const Student &s1, const Student &s2);
    friend std::ostream& operator << (std::ostream &os, const Student &s);
    friend std::istream& operator >> (std::istream &is, Student &s);
};
 
int main()
{
    std::multiset<Student> m;
    
    typedef std::istream_iterator<Student> in;
    std::copy(in(std::cin), in(), std::inserter(m, m.begin()));
    std::copy(m.begin(), m.end(), std::ostream_iterator<Student>(std::cout, "\n"));
    
    return EXIT_SUCCESS;
}
 
bool operator < (const Student &s1, const Student &s2) {
    return std::accumulate(s1.marks.begin(), s1.marks.end(), 0) <
           std::accumulate(s2.marks.begin(), s2.marks.end(), 0);
}
 
std::ostream& operator << (std::ostream &os, const Student &s) {
    os << s.name << " ";
    for (const int &value : s.marks)
        os << value << " ";
    return os;
}
 
std::istream& operator >> (std::istream &is, Student &s) {
    is >> s.name;
    for (auto it = s.marks.begin(); it != s.marks.end(); ++it)
        is >> *it;
    return is;
}
Добавлено через 55 секунд
Для чтения с файла передаете переменную файла вместо std::cout и все дела

Добавлено через 26 минут
Цитата Сообщение от outoftime Посмотреть сообщение
#include <boost/lexical_cast.hpp>
Забыл удалить...
Yandex
Объявления
26.12.2013, 18:13     Контейнер multimap. Обратный вывод
Ответ Создать тему
Опции темы

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