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

STL небольшие исправления - C++

Восстановить пароль Регистрация
 
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
21.03.2012, 11:38     STL небольшие исправления #1
Доброго времени суток. Помогите пожалуйста немного переделать программу. Вместо вектора мне нужна сделать очередь, ключом должен быть водитель (т.е "name"), вместо того чтобы выводить список различных маршрутов (nm), нужно выводить список всех водителей (name) работающих на одной марке автобуса (mark). Буду очень благодарен.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include <algorithm>
#include <iterator>
#include <vector>
#include <map>
#include <set>
 
using namespace std;
struct bus
{
  int  nm;
  string name;
  int num_bus;
  string marka;
};
 
 bool sr_nm (bus &a,bus &b){return a.nm<b.nm;}
 bool sr_num (bus &a, bus &b){return a.num_bus<b.num_bus;}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
 
 
  setlocale ( 0, "RUS" );
  vector<bus> ls;
  ifstream in ( "infile.txt" ); ofstream out ( "outfile.txt" );
 
       int  n;
 
    in >> n;
    for(int i=0; i<n; i++)
    {
     bus p;
     in>>p.nm>>p.name>>p.num_bus>>p.marka;
     ls.push_back(p);
    }
    vector<bus>:: iterator i;
    for(i=ls.begin(); i!=ls.end(); i++)
      cout<<i->nm<<" "<<i->name<<" "<<i->num_bus<<" "<<i->marka<<endl;
     cout<<endl;
 
 
    sort(ls.begin(), ls.end(),sr_nm);
    for(i=ls.begin(); i!=ls.end(); i++)
    cout<<i->nm<<" "<<i->name<<" "<<i->num_bus<<" "<<i->marka<<endl;
    cout<<endl;
 
 
    sort(ls.begin(), ls.end(),sr_num);
    for(i=ls.begin(); i!=ls.end(); i++)
    cout<<i->nm<<" "<<i->name<<" "<<i->num_bus<<" "<<i->marka<<endl;
    cout<<endl;
    
    map< int, bus > m;
    
    for (i=ls.begin(); i!=ls.end(); i++)
        m.insert(pair < int, bus> ( (*i).num_bus, (*i) ) );
 
     cout<<"list marshrutow"<<endl;
    set< int > mar;
    set<int>::iterator r;
    for(i=ls.begin(); i!=ls.end(); ++i )
        mar.insert((*i).nm);
    for(r=mar.begin(); r!=mar.end(); ++r)
        cout<<*r<<endl;
    //_____________________________________________
    cout<<"vvedite nomer marshruta:"<<endl;
        int a;
        cin>>a;
        map < int, bus >::iterator z;
        z= m.find(a);
        if (z!=m.end()){
        do{
            cout<<(*z).second.num_bus<<endl;
            z++;
        } while (z!=m.upper_bound(a) );
        }
        else
        cout<<" takih net"<<endl;
//_____________________________
      
 
      int o;
      cin>>o;
    return 0;
}
Добавлено через 11 часов 24 минуты
Апаю темку

Добавлено через 38 минут
Поменял код. Теперь у меня проблема в 51-56 строке. Не знаю как вывести элементы очереди.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include <iostream>
#include <queue>
#include <fstream>
#include <string>
#include <list>
#include <algorithm>
#include <iterator>
#include <vector>
#include <map>
#include <set>
using namespace std;
 
struct bus
{
  int  nm;
  string name;
  int num_bus;
  string marka;
  friend ostream&operator<<(ostream&os,bus opa);
};
 
 bool sr_nm (bus &a,bus &b){return a.nm<b.nm;}
 bool sr_num (bus &a, bus &b){return a.num_bus<b.num_bus;}
 
 
 
int main()
{
 
 
  setlocale (LC_ALL,"RUS");
  vector<bus> vec;  
  queue<bus> ls;
  ifstream in ( "infile.txt" ); ofstream out ( "outfile.txt" );
 
       int  n;
 
    in >> n;
    for(int i=0; i<n; i++)
    {
     bus p;
     in>>p.nm>>p.name>>p.num_bus>>p.marka;
     ls.push(p);
     vec.push_back(p);
    }
 
 
   
    vector<bus>:: iterator q;
 
    while (!ls.empty())
    {
 
        out<<ls.front();
        ls.pop();
    }
 
 
 
 
 
 
    
     
 
 
    sort(vec.begin(), vec.end(),sr_nm);
    for(q=vec.begin(); q!=vec.end(); q++)
    cout<<q->nm<<" "<<q->name<<" "<<q->num_bus<<" "<<q->marka<<endl;
    cout<<endl;
    
 
 
    /*sort(ls.begin(), ls.end(),sr_num);
    for(i=ls.begin(); i!=ls.end(); i++)
    cout<<i->nm<<" "<<i->name<<" "<<i->num_bus<<" "<<i->marka<<endl;
    cout<<endl;*/
    
    map< int, bus > m;
    
    for (q=vec.begin(); q!=vec.end(); q++)
        m.insert(pair < int, bus> ( (*q).num_bus, (*q) ) );
 
     cout<<"Список маршрутов"<<endl;
    set< int > mn;
    set<int>::iterator r;
    for(q=vec.begin(); q!=vec.end(); ++q )
        mn.insert((*q).nm);
    for(r=mn.begin(); r!=mn.end(); ++r)
        cout<<*r<<endl;
    //_____________________________________________
    cout<<"Введите номер маршрута:"<<endl;
        int a;
        cin>>a;
        map < int, bus >::iterator z;
        z= m.find(a);
        if (z!=m.end()){
        do{
            cout<<(*z).second.num_bus<<endl;
            z++;
        } while (z!=m.upper_bound(a) );
        }
        else
        cout<<"Таких нет"<<endl;
//_____________________________
      
 
      int o;
      cin>>o;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2012, 11:38     STL небольшие исправления
Посмотрите здесь:

Небольшие вопросы C++
Небольшие изменение в коде C++
C++ Контрольная(исправления в коде)
Небольшие задачи с массивами C++
C++ 2 небольшие функции
C++ Сделать тесты небольшие
Составить программу для исправления ошибок в тексте C++
Какие действия исполняет заданная часть программы? Если есть ошибки исправить их и объяснить исправления C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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