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

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

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

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

03.06.2014, 16:21. Просмотров 791. Ответов 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 минут
За помощь готов отблагодарить в денежном эквиваленте, просто срочно нужно решение.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 16:21     Разработка класса контейнера
Посмотрите здесь:

Разработка класса строка C++
Итератор контейнера внутреннего класса шаблона C++
Разработка класса C++
C++ Разработка контейнера типа Карта (Map)
Разработка класса C++
C++ Вывод контейнера указателей на экземпляры абстрактного класса
Swap для элементов контейнера указателей на экземпляры абстрактного класса C++
C++ На базе контейнера vector из стандартной библиотеки С++ создайте шаблон класса Set,
Целью работы является создание программы для обработки набора объектов с использованием класса -контейнера C++
Удаление объекта класса из контейнера C++
Разработка шаблонного класса-контейнера C++
Отличие структуры и класса от контейнера C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2890 / 1239 / 78
Регистрация: 27.05.2008
Сообщений: 3,325
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();
} ;
Енер
-30 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 46
03.06.2014, 22:37  [ТС]     Разработка класса контейнера #3
Спасибо, а какие изменения делать в lab4.cpp? Я как бы готов заплатить за помощь.
Yandex
Объявления
03.06.2014, 22:37     Разработка класса контейнера
Ответ Создать тему
Опции темы

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