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

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

Войти
Регистрация
Восстановить пароль
 
Енер
-30 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 55
#1

Разработка класса контейнера - C++

03.06.2014, 16:21. Просмотров 855. Ответов 2
Метки нет (Все метки)

День добрый. В общем у меня есть программа, программный код приведу ниже.

Класс Очередь (CQueue) с такими же методами, как и класс Стек. Этот класс представляет собой такую структуру данных, в которой реализуется правило «первым пришел - первым вышел»

Класс Стек (CStack) с такими методами:
  1. запись данного в стек (Push);
  2. извлечение данного из стека (Pop);
  3. вывод содержимого стека на монитор (Print);
  4. получение числа данных в стеке (Size);
  5. проверка стека на наличие в нем данных (Empty).


Она работает как нужно, все бы ничего, но не прокатило, для сдачи задания нужно что бы программа была реализована по методу "контейнерный класс".

"Предусмотреть такую реализацию программы, использующей разработанный класс, которая бы позволила убедиться в корректности реализации методов класса. В частности, во всех вариантах должен быть реализован метод вывода на монитор всех элементов массива и их количества."

Код программы:

lab4.cpp
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
131
132
133
134
135
136
137
138
139
140
141
142
143
#include "stdafx.h"
#include "lab4.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
 
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
 
 
// The one and only application object
 
CWinApp theApp;
 
using namespace std;
 
char Buf [1024];
char *Rus(char *Mess)
{ 
    CharToOemA(Mess,Buf);
    return Buf;
}
 
 
CQueue::CQueue() 
{
   
   head = tail = 0 ; 
} 
CQueue::~CQueue() 
{
 
} 
void out(CQueue k)
{
    for(int i=k.head+1;i<k.tail+1;i++)
    {cout<<" "<<k.stack[i];}
}
 
void CQueue::push ( int num ) 
{ 
   if ( tail+1 ==head || ( tail+ 1 ==size && !head )) { 
     cout << "очередь полна\n" ; 
     return ; 
   } 
   tail++; 
   if ( tail==size ) tail = 0 ;
   stack [ tail ] = num; 
 
} 
 
void CQueue::pop() 
{ 
  if ( head == tail ) { 
     cout << "очередь пуста\n" ; 
     return ;
   } 
   head++; 
   if ( head==size ) head = 0 ; 
 
  
} 
 
int CQueue::Size()
{   int c=0;
    for(int i=head;i<tail;i++)
    {
        c++;
    }
    return c;
}
 
int CQueue::back()
{
    return stack[tail];
}
 
int CQueue::front()
{
    return stack[head+1];
}
 
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;
 
    // initialize MFC and print and error on failure
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        // TODO: change error code to suit your needs
        _tprintf(_T("Fatal Error: MFC initialization failed\n"));
        nRetCode = 1;
    }
    else
    {
        // TODO: code your application's behavior here.
    /*setlocale(LC_ALL,"rus");*/
   CQueue stack1, stack2; 
   int i; int n;
    
    for (i= 1 ; i <= 5 ; i++ ) 
   { 
         stack1.push ( i ) ;
   } 
   cout<<Rus("Изначальный стек")<<endl;
   out(stack1);
   cout<<endl;
   cout<<endl;
 
 
do
  {
                cout<<endl<<"Menu:"<<endl;
                cout<<Rus("1. Запись значения в стек")<<endl;
                cout<<Rus("2. Просмотр стека с навым элементом")<<endl;
                cout<<Rus("3. Размер стека")<<endl;
         cout<<Rus("4. Первый и последний элемент")<<endl;
         cout<<Rus("5. Удаление элемента")<<endl;
         cout<<Rus("6. Добавление элемента")<<endl;
         cout<<Rus("7. Exit")<<endl;
                cout<<endl;  
       switch(_getche()-'0')
            {
                                             case 1:  cout<<endl<<Rus(">Введите элемент: "); cin>>n; stack1.push(n); break;   
                case 2: cout<<endl<<Rus(">Стек с новым элементом:   "); out(stack1); cout<<endl; break;
                case 3: cout<<endl<<Rus(">Размер стека:"); cout<<stack1.Size(); cout<<endl; break;
                case 4: cout<<endl<<Rus(">Последний элемент:  "); cout<<stack1.back(); cout<<endl;
                    cout<<Rus(">Первый элемент:  ");  cout<<stack1.front();  cout<<endl; break;
                case 5: cout<<endl<<Rus(">Удаление элемента");   stack1.pop();   cout<<endl; 
                           cout<<Rus(">Текущие стек:  ");   out(stack1); cout<<endl; break;
                case 6: cout<<endl<<Rus(">Дабавим еще один элемент: ");  cin>>n;stack1.push(n);   cout<<endl;  break;
                                             case 7: exit(0); 
            } 
  }
 
while(1);
 
}
 
    return nRetCode;
 
}
lab4.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
 
#include "resource.h"
 
class CQueue {   
static const int size=100; 
int stack[100]; 
   int head, tail; 
public :
   CQueue () ; 
   ~CQueue () ;  
   void push ( int num ) ; 
   friend void out(CQueue k);
   int Size();
   void pop();
   int front();
   int back();
} ;
Помогите пожалуйста переписать программку под требования. Буду очень благодарен.

Добавлено через 1 час 47 минут
За помощь готов отблагодарить в денежном эквиваленте, просто срочно нужно решение.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 16:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разработка класса контейнера (C++):

Разработка шаблонного класса-контейнера - C++
Помогите пожалуйста разобраться! решаю задачу и не могу найти солюшен, всё очень просто, вот задача: Необходимо разработать класс...

Разработка контейнера типа Карта (Map) - C++
Приветсвую всех форумчан! Имеется задача разработать решение реализующее динамическую структуру данных (контейнер) типа «Карта»(map,...

Отличие структуры и класса от контейнера - C++
Добрый день! Подскажите пожалуйста, чем отличается контейнер от структуры и класса?

Удаление объекта класса из контейнера - C++
Подскажите пожалуйста как правильно удалить обьект. MyCarDeque.push_front(*CreateNewCar()); Так добавлял обьект в очередь. Car...

Итератор контейнера внутреннего класса шаблона - C++
Следующий код компилируется: struct A { struct B {}; vector&lt;B&gt; vec; vector&lt;B&gt;::iterator it; }; А следующий код не...

Вывод контейнера указателей на экземпляры абстрактного класса - C++
Добрый день. Задача требует описать абстрактный класс и несколько наследников этого класса. Затем, описать контейнер (list)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
03.06.2014, 16:39 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Мне кажется, что преп хотел получить нечто вроде такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
 
#include "resource.h"
 
template <class T>
class CQueue {   
   static const int size=100; 
   T stack[size]; 
   int head, tail; 
public :
   CQueue () ; 
   ~CQueue () ;  
   void push ( T num ) ; 
   friend void out(CQueue k);
   int Size();
   void pop();
   T front();
   T back();
} ;
1
Енер
-30 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 55
03.06.2014, 22:37  [ТС] #3
Спасибо, а какие изменения делать в lab4.cpp? Я как бы готов заплатить за помощь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 22:37
Привет! Вот еще темы с ответами:

Swap для элементов контейнера указателей на экземпляры абстрактного класса - C++
Добрый вечер. Не могу осилить проблему: Описан абстрактный класс. Описаны наследники этого класса уже без абстрактности. Описан...

На базе контейнера vector из стандартной библиотеки С++ создайте шаблон класса Set, - C++
На базе контейнера vector из стандартной библиотеки С++ создайте шаблон класса Set, в котором каждый объект может храниться только в одной...

Целью работы является создание программы для обработки набора объектов с использованием класса -контейнера - C++
Целью работы является создание програмки для обработки набора объектов с использованием класса -контейнера динамический массив ( vector...

Разработка класса - C++
Разработать класс описывающий множество точек на плоскости, определить для экземпляров класса операцию объединения множество и операция...


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

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

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