Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
Завершенные тесты: 1
1

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

26.12.2013, 16:51. Просмотров 1096. Ответов 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();
}
Я так понимаю ,что проблема с выводом,ведь когда я писал программу сначала я написал обычный вывод (по возрастанию,ведь меп сортирует автоматически),то никаких ошибок небыло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2013, 16:51
Ответы с готовыми решениями:

Считывание текста с файла в контейнер multimap
Допусти у меня есть файл записанный вот таким методом #include &lt;iostream&gt;...

Multimap. Ошибка operator+ not implemented in type multimap
Я начинающий в си, есть задача подсчета частоты встречаемости символов, делал...

Обратный вывод слов с 2 гласными
Писать в С++. Существует строка, состоящая из слов, разделенных пробелами....

Контейнер list, вывод содержимого в заданном порядке
Как с помощью двунаправленных итераторов вывести содержимое списка в таком...

multimap
Я что-то не понимаю в чем проблема! #include &lt;iostream&gt; #include &lt;string&gt;...

1
outoftime
║XLR8║
763 / 662 / 212
Регистрация: 25.07.2009
Сообщений: 3,320
Записей в блоге: 5
26.12.2013, 18:13 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>
Забыл удалить...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 18:13

шаблон multimap С++
Уже второй день не могу найти рабочего шаблона multimap на АВЛ деревьях или на...

сортировка в multimap
доброго времени суток. собственно, вопрос такой: есть программа использующая...

STL multimap.
#include &quot;stdafx.h&quot; #include &lt;map&gt; #include &lt;algorithm&gt; #include &lt;string&gt;...


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

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

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