Рекомендация: прочитайте задачу! Выполните ее и сравните полученный результат с картинкой CMD
Если вы полностью уверены что не можете осилить эту задачу, советую вам просмотреть код и полностью в нем разобраться! Протестировать все в отладчике!
Напишите класс, который реализует функциональность стека.Класс Stack должен иметь:
private фиксированный массив целых чисел длиной 10;
private целочисленное значение для отслеживания длины стека;
public метод с именем reset(), который будет сбрасывать длину и все значения элементов на 0;
public метод с именем push(), который будет добавлять значение в стек. push() должен возвращать значение false, если массив уже заполнен, и true в противном случае;
public метод с именем pop() для вытягивания и возврата значения из стека. Если в стеке нет значений, то должен выводиться стейтмент assert;
public метод с именем print(), который будет выводить все значения стека.
Следующий код main():
int main()
{
Stack stack;
stack.reset();
stack.print();
stack.push(3);
stack.push(7);
stack.push(5);
stack.print();
stack.pop();
stack.print();
stack.pop();
stack.pop();
stack.print();
return 0;
}
должен производить следующий результат:
( )
( 3 7 5 )
( 3 7 )
( )
/*
Dombrovsky Igor Vladimirovish group 32PPS11
Task STACK
*/
#include <iostream>
#include <new>
#define STOP_CMD system("pause >> void");
#define COLOR_CMD system("color 0A");
using namespace std;
class Stack {
public:
Stack() { // Initialization ZERO
try {
STACK = new int[SIZE]();
cout << "Stack created successfully " << endl;
}
catch (bad_alloc &memoryAllocationException) {
cerr << "Exception occured: [ERROR MEMORY]" << memoryAllocationException.what() << endl; // Fixed output
}
counter = 0;
}
~Stack() {
delete[] STACK;
cerr << "All data is deleted!" << endl;
STOP_CMD
}
void reset() { //RESET counter and elements -> STACK
counter = 0;
for (size_t i = 0; i < SIZE; i++)
STACK[i] = 0;
}
bool push(int element) { // ADD Element -> STACK
if (counter < SIZE || counter >= 0) {
STACK[counter] = element;
counter++;
return true;
}
else
return false;
}
void pop() { // Take Element -> STACK
if (counter <= 0)
cerr << "Stack empty" << endl;
else
counter--;
}
void print() { // DISPLAY
cout << "( ";
for (size_t i = 0; i < counter; i++)
{
cout << STACK[i] << " ";
}
cout << ")" << endl;
}
private:
const int SIZE = 10;
int *STACK; // Pointer ARRAY
int counter;
};
int main() {
COLOR_CMD
Stack stack;
stack.reset();
stack.print();
stack.push(3);
stack.push(7);
stack.push(5);
stack.print();
stack.pop();
stack.print();
stack.pop();
stack.pop();
stack.print();
return 0;
}