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

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

Войти
Регистрация
Восстановить пароль
 
triadec_96
12 / 12 / 1
Регистрация: 27.12.2012
Сообщений: 448
Завершенные тесты: 1
#1

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

26.12.2013, 16:51. Просмотров 785. Ответов 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. Обратный вывод (C++):

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

Multimap. Ошибка operator+ not implemented in type multimap - C++
Я начинающий в си, есть задача подсчета частоты встречаемости символов, делал через ассоциативный массив map&lt;char, int&gt;, программа...

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

multimap - C++
Я что-то не понимаю в чем проблема! #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;map&gt; using namespace std; int main() ...

STL multimap. - C++
#include &quot;stdafx.h&quot; #include &lt;map&gt; #include &lt;algorithm&gt; #include &lt;string&gt; #include &quot;conio.h&quot; #include &lt;iostream&gt; using...

шаблон multimap С++ - C++
Уже второй день не могу найти рабочего шаблона multimap на АВЛ деревьях или на ХЭШ-таблице. Может у кого есть полезная ссылка по данной...

1
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
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 - C++
доброго времени суток. собственно, вопрос такой: есть программа использующая контейнер класса multimap. содержит пару &lt;ключ,структура&gt;...

Ошибка с multimap - C++
Здравствуйте, помогите пожалуйста разобраться есть multimap переменная T_rules, в которой лежат T_rule_head, T_state_name ...

Multimap зацикливается - C++
Всем добрый вечер, Помогите, пожалуйста разобраться с зацикленным &quot;Not found&quot;. Поиск по названию блюда происходит нормально, а вот...

multimap::emplace() - C++
При компиляции этого кода: #include &lt;iostream&gt; #include &lt;map&gt; using namespace std; int main () { multimap&lt;char,int&gt;...


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

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

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