search

Рекомендация: прочитайте задачу! Выполните ее и сравните полученный результат с картинкой 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; 
}	

array