Консультация № 190412
11.01.2017, 18:45
0.00 руб.
0 0 0
Здравствуйте! Подскажите пожалуйста, как модифицировать этот класс stack, используя механизм исключений? Чтобы при переполнении стека, попытке взять элемент из пустого стека и невозможности выделить нужное количество памяти генерировались соответствующие исключения? Спасибо)



Приложение:
class Stack
{
enum { EMPTY = -1, FULL = 20 };
char st[FULL + 1];
int top;

public:
Stack();
// Добавление элемента
void Push(char c);
// Извлечение элемента
char Pop();
// Очистка стека
void Clear();
// Проверка существования элементов в стеке
bool IsEmpty();
// Проверка на переполнение стека
bool IsFull();
// Количество элементов в стеке
int GetCount();
};


Stack::Stack()
{
top = EMPTY;
}

void Stack::Clear()
{
top = EMPTY;
}

bool Stack::IsEmpty()
{
return top == EMPTY;
}

bool Stack::IsFull()
{
return top == FULL;
}

int Stack::GetCount()
{
// Количество присутствующих в стеке элементов
return top + 1;
}

void Stack::Push(char c)
{
if (!IsFull())
st[++top] = c;
}

char Stack::Pop()
{
if (!IsEmpty())
return st[top--];
else // Если в стеке элементов нет
return 0;
}

void main()
{
srand(time(0));
Stack ST;
char c;
while (!ST.IsFull())
{
c = rand() % 4 + 2;
ST.Push(c);
}
while (c = ST.Pop())
{
cout << c << " ";
}
cout << "\n\n";
}

Обсуждение

Форма ответа