Форум программистов, компьютерный форум 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
13.04.2011, 13:36  [ТС]     Перегрузка операторов ввода и вывода
Вот само задание: Реализовать класс "Очередь символов"(на базе списка).Реализовать класс "Массив очередей".Длинна массива определяется во время инициализации и в дальнейшем не меняется.Массив должен хранить сами очереди, а не указатели на них.Доступ к элементам массива осуществляется с помощью квадратных скобок.

файл massiv.h
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
class massiv
{
private: 
        ochered *m;
        int isize;
public:
        massiv(int size);
        ~massiv();
        ochered& operator[](int n);
};
 
massiv::massiv(int size)
{
 m = new ochered[size];
 isize=size;
}
 
massiv::~massiv()
{
 delete[] m;
 isize=0;
}
 
ochered& massiv::operator[](int n)      
{
 if(n<0 || n>=isize)
   { 
    exit(1); 
   }
 return m[n];                  
}
файл class.h
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
using namespace std;
class ochered
{
 private:
     struct element
      {
        char info;
        element *prev;
        element *next;
      };
     element *head;//указатель на голову очереди
     element *tail;//указатель на хвост очереди
 public:
     ochered();
     ~ochered();
            void insert_tail(char x);//вставка элемента в хвост очереди
     void delete_head();//удаление элемента из головы очереди
            void print();//показать очередь
     bool is_empty();//проверка ну пустоту
};
 
//реализация
ochered::ochered()
{
     head=0;
     tail=0;
     n=0;
}
 
ochered::~ochered()
{
while(head)
  {
   element* temp = head;
   head = head->next;
   delete temp;
   temp = 0; 
  }
}
 
//проверка очереди на пустоту
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;
     }
}    
     
//удаление элемента из головы очереди
void ochered::delete_head()
{    
 element *temp;
    
     if(head)
      {
            temp=head;
            head=head->next;
            delete temp;
      }
     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
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
#include "stdafx.h"
#include "iostream"
#include "class.h"
#include "massiv.h"
void RedactOchered(massiv& mas,int i)
{
    char elem;
    int sv=0,
        kol=0;
     cout<<"*****************************************************"<<endl;
     cout<<"1. Вставить элемент в хвост очереди."<<endl;
            cout<<"2. Показать очередь."<<endl;
            cout<<"3. Удалить элемент из головы очереди."<<endl;
            cout<<"4. Проверка очереди на пустоту."<<endl;
     cout<<"0. Вернуться в предыдущее меню"<<endl;
     cout<<"*****************************************************"<<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: 
                                  if(mas[i].is_empty())
                                       cout<<"Очередь пуста"<<endl;
                           else 
                                cout<<"Очередь не пуста"<<endl;
                    cout<<"Введите пункт меню:"<<endl;
                    cin>>sv;
                           break;
          case 0:
                    break;
          default: 
             cout<<"Такого пункта нет!!"<<endl;
             cout<<"Введите пункт меню:"<<endl;
            cin>>sv;
         }
    }
}
 
void main()
{
 int n=0,
     index=0;
 massiv q(3); //инициализация массива размером 3
     setlocale( LC_ALL, "Russian" );
     cout<<"*****************************************************"<<endl;
     cout<<"1. Введите номер очереди которую вы хотите изменить"<<endl; 
     cout<<"2. Редактировать элемент массива."<<endl;
     cout<<"0. Exit"<<endl;
     cout<<"*****************************************************"<<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;
                cout<<"1. Введите номер очереди которую вы хотите изменить."<<endl; 
                cout<<"2. Редактировать элемент массива."<<endl;
                cout<<"0. Exit"<<endl;
                cout<<"*****************************************************"<<endl;
                cout<<"Введите пункт меню:"<<endl;
                cin>>n;
                break;
         case 0:
                break;
         default: 
                    cout<<"Такого пункта нет!!"<<endl;
                    cout<<"Введите пункт меню:"<<endl;
                    cin>>n;
}
}
}

всё что мог я убрал.

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