Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Енер
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 92

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

03.06.2014, 16:21. Показов 2164. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2014, 16:21
Ответы с готовыми решениями:

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

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

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

2
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
03.06.2014, 16:39
Мне кажется, что преп хотел получить нечто вроде такого:
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
 Аватар для Енер
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 92
03.06.2014, 22:37  [ТС]
Спасибо, а какие изменения делать в lab4.cpp? Я как бы готов заплатить за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2014, 22:37
Помогаю со студенческими работами здесь

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

Заполнение контейнера map объектами класса
Здравствуйте! Помогите разобраться с map. Не получается заполнить контейнер объектами класса. Если можно, напишите простой пример.

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru