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

Вывод элементов очереди на экран - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
26.03.2012, 10:52     Вывод элементов очереди на экран #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
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
112
#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
26.03.2012, 10:52     Вывод элементов очереди на экран
Посмотрите здесь:

C++ Объявление ,инициализация ы вывод на экран двусторонней очереди
Вывод элементов множества на экран C++
Вывод на экран элементов 2-х масссивов (язык С) C++
C++ Подсчитать количество различных элементов в очереди и вывести их на экран
C++ Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по возрастанию элементов в этой очереди.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.03.2012, 11:11     Вывод элементов очереди на экран #2
C++
1
2
3
4
5
friend ostream& operator<< (ostream& os, bus& opa)
{
    os << nm << ' ' << name << ' ' << num_bus << ' ' << marka;
    return os;
}
C++
1
2
bool sr_nm (const bus &a, const bus &b){return a.nm<b.nm;}
 bool sr_num (const bus &a, const bus &b){return a.num_bus<b.num_bus;}
DebieCooper
 Аватар для DebieCooper
34 / 34 / 1
Регистрация: 12.10.2011
Сообщений: 285
26.03.2012, 11:51  [ТС]     Вывод элементов очереди на экран #3
error C2597: illegal reference to non-static member 'bus::nm'
Ругается
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
26.03.2012, 11:53     Вывод элементов очереди на экран #4
DebieCooepr, поправка
C++
1
os << opa.nm << ' ' << opa.name << ' ' << opa.num_bus << ' ' << opa.marka;
Yandex
Объявления
26.03.2012, 11:53     Вывод элементов очереди на экран
Ответ Создать тему
Опции темы

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