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

Перегрузка операторов ввода и вывода - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как записать в массив элементы? http://www.cyberforum.ru/cpp-beginners/thread275150.html
typedef std::bitset<CHAR_BIT> T_char_bitset; T_char_bitset Key; int j=0; key_in>>s; T_char_bitset char_bitset; Key=char_bitset(s); j++; так почему-то не записывает
C++ Записи данных структурного типа в файл... Составить программу для записи данных структурного типа в файл. Ввод информации осуществлять с использованием функций высокого уровня, вывод информации осуществлять с использованием функций низкого... http://www.cyberforum.ru/cpp-beginners/thread275147.html
C++ Вывести название месяца, следующего за введенным
5) Составить программу, которая бы выдавала название месяца, следующего за введенным месяцем (с учетом того, что за декабрем идет январь).
Как работает этот цикл???) C++
for(int i=0; (s1 = s2)!='\0';i++) Массивы s1 и s2 символьные
C++ разветвляющиеся алгоритмы (график) http://www.cyberforum.ru/cpp-beginners/thread275105.html
I. Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе» в зависимости от того, лежит ли точка внутри заштрихованной области,...
C++ Факториалы http://acm.timus.ru/problem.aspx?space=1&num=1083 помогите решить эту задачу у меня мысль есть, но похоже неправильная. #include "iostream" using namespace std; int main() { подробнее

Показать сообщение отдельно
Student100
3 / 3 / 2
Регистрация: 08.04.2011
Сообщений: 27

Перегрузка операторов ввода и вывода - C++

12.04.2011, 18:51. Просмотров 2829. Ответов 6
Метки (Все метки)

Добрый вечер! Помогите с задачкой.Я создал класс очередь и класс массив очередей.задача готова, но препод потребовал перегрузить оператор ввода и вывода((

вот задача
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
#include "stdafx.h"
#include "iostream"
#include "class.h"
#include "massiv.h"
void RedactOchered(massiv& mas,int i)
{
    char elem,head;
    int sv=0,kol=0;
     cout<<"1. Вставить элемент в хвост очереди."<<endl;
     cout<<"2. Показать очередь."<<endl;
     cout<<"3. Удалить элемент из головы очереди."<<endl;
     cout<<"4. Показать голову очереди."<<endl;
     cout<<"5. Показать кол-во элементов очереди."<<endl;
     cout<<"6. Проверка очереди на пустоту."<<endl;
     cout<<"0. Выход в предыдущее меню"<<endl;
     cout<<"Введите пункт"<<endl;
     cin>>sv;
 
    while(sv!=0)
    {
        switch(sv)
         {
           case 1:
                    cout<<"Введите новый элемент:"<<endl;
                    cin>>elem;
                    mas[i].insert_tail(elem);
                    cout<<"Введите пункт"<<endl;
                    cin>>sv;
                    break;
           case 2:
                    mas[i].print();
                    cout<<"Введите пункт"<<endl;
                    cin>>sv;
                    break;
           case 3:
                    mas[i].delete_head();
                    cout<<"Введите пункт"<<endl;
                    cin>>sv;
                    break;    
           case 4:
                    head=mas[i]._head();
                    if(head)
                     cout<<"Голова очереди - "<<head<<endl;
                    cout<<"Введите пункт"<<endl;
                    cin>>sv;
                    break;
           case 5:
                    kol=mas[i].kol();
                    cout<<"Кол-во элементов в очереди = "<<kol<<endl;;
                    cout<<"Введите пункт"<<endl;
                    cin>>sv;
                    break;
           case 6: 
                    if(!mas[i].kol())
                        cout<<"Очередь пуста"<<endl;
                    else 
                        cout<<"Очередь не пуста"<<endl;
                    cout<<"Введите пункт"<<endl;
                    cin>>sv;
                    break;
           case 0:
                    break;
         }
    }
}
 
void main()
{
 int n=0,
     index=0,
     razmer=0;
     massiv q;    
     setlocale( LC_ALL, "Russian" );
     cout<<"1. Введите индекс элемента массива."<<endl; 
     cout<<"2. Редактировать элемент массива."<<endl;
     cout<<"0. Exit"<<endl;
     cout<<"Введите пункт"<<endl;
     cin>>n;
     while(n!=0)
      {
       switch(n)
        {
         case 1:
                cout<<"Введите индекс элемента массива."<<endl;
                cin>>index;
                cout<<"Введите пункт"<<endl;
                cin>>n;
                break; 
         case 2:
                RedactOchered(q,index);
                cout<<"Введите пункт"<<endl;
                cin>>n;
                break;
         case 0:
                break;
}
}
}
вот класс очереди
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using namespace std;
class ochered
{
 private:
     struct element
      {
        char info;
        element *prev;
        element *next;
      };
     element *head;//указатель на голову очереди
     element *tail;//указатель на хвост очереди
     int n;//размер очереди
 public:
     //ochered& operator <<(char a);
     ochered();//создание пустой очереди
     ~ochered();
     void insert_tail(char x);//вставка элемента в хвост очереди
     void delete_head();//удаление элемента из головы очереди
     void print();//показать очередь
     char _head();//показать голову очереди
     int  kol();//количество элементов
     bool is_empty();//проверка ну пустоту
     //void clear();очистка очереди
};
/*ochered& ochered::operator << (string a){
        element* ph = new element;
        ph->info = a;
        ph->next = 0;
        if (head!=0){
                tail->next = ph;
                tail = ph;
        }
        else{
                head = ph;
                tail = ph;
        }
        return *this;
}*/
 
//реализация
ochered::ochered()
{
     head=0;
     tail=0;
     n=0;
}
ochered::~ochered(){
while(head)
  {
   element* temp = head;
   head = head->next;
   delete temp;
   temp = 0; 
  }
}
//возвращение элемента из головы очереди
char ochered::_head()
{
     if(!head)
      {
        cout<<"Очередь пуста"<<endl;
        return 0;
      }    
     else 
        return head->info;
};
 
//возвращение количества элементов очереди
int ochered::kol()
{
     return n;
}
 
//проверка очереди на пустоту
bool ochered::is_empty()
{
     return !head;
};
 
//вставка элемента в хвост очереди
void ochered::insert_tail(char x)
{
 element *temp;
    
     temp=new element;
     temp->info=x;
     temp->next=0;
     temp->prev=tail;
     if(head==0)
            head = tail = temp;
     else
            {
              tail->next= temp;
              tail = temp;
            }
     n++;
}    
     
//удаление элемента из головы очереди
void ochered::delete_head()
{    
 element *temp;
    
     if(head)
      {
            temp=head;
            head=head->next;
            delete temp;
            n--;
      }
     else cout<<"Очередь пуста"<<endl;
};
 
//показать очередь
void ochered::print()
{
 element *temp;
     temp=head;
     if(head)
      {
            while(temp!=0)
             {
                 cout<<temp->info<<" ";
                 temp=temp->next;
             }
            cout<<endl;
      }
     else cout<<"Очередь пуста"<<endl;
}
и класс массива
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
class massiv
{
private:
        ochered *m;
        int size;
public:
        massiv();
        ~massiv();
        ochered& operator[](int n);
};
 
ochered& massiv::operator[](int n)      
{
 if(n<0 || n>=size)
   { 
    exit(1); 
   }
 return m[n];                  
}
 
massiv::massiv()
{
 setlocale( LC_ALL, "Russian" );
 cout<<"Введите размер массива"<<endl;
 cin>>size;
 m = new ochered[size];
}
 
massiv::~massiv()
{
 delete[] m;
 size=0;
}
нужно чтоб оператор вывода выводил очередь, тоесть элемент массива на экран, а оператор ввода считывал строку введённую с клавы и вносил её в очредь.

я сделал оператор ввода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ochered& ochered::operator << (string a){
        element* ph = new element;
        ph->info = a;
        ph->next = 0;
        if (head!=0){
                tail->next = ph;
                tail = ph;
        }
        else{
                head = ph;
                tail = ph;
        }
        return *this;
}
но он работает если вводить элементвы по одному(( помогите пожалуйста))заранее спасибо))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru