Ма
Мария

C++ Помогите пожалуйста.



Всем привет... пытаюст реализовать простенький стэк. но всё идёт не так как хоЧЦа=\

#include
using namespace std;

#define N 10

class stack
{

private: int v;
int stck [ N ];

public: void init();
void push(int a);
void poop();
};

void stack :: init()
{
v = 0;
}

void stack :: push(int a)
{
if (v == N) cout << "Stck is full\n";
else
stck [ v++ ] = a;
}

void stack :: poop()
{
if (v == 0) cout << "Stack is empty!\n";
else
cout << stck [ v-- ] << endl;
}

int main()
{
stack ob;

ob.init();

ob.push(1);
ob.push(2);
ob.push(3);

ob.poop();
ob.poop();
ob.poop();

return 0;
}

Но проблема в том что вместо 3 2 1 мне выдаёт -858993460 3 2 ...Почему так? .

Всем спасибо.

АР
Алексей Рыбин

Конструктора нет.

ТС
Татьяна Стрельникова

void stack :: poop()
{
if (v == 0) cout << "Stack is empty!\n";
else
cout << stck [ --v ] << endl;
}

здесь сначала уменьшается v, а потом берется значение. у тебя было наоборот, бралось значение, которого нету (тоесть значение v равнялось 3, а должно быть 2), а уже потом v уменьшалось на единицу.

ЮК
Юрий Кальянов

Надо писать не cout << stck [ v-- ] << endl;
а cout << stck[--v] << endl;

Или же постинкремент применить в методе push. Но только не "пост-пост" или "пре-пре"

Почему - подумайте сами.

Похожие вопросы
C++ помогите пожалуйста
C++ Помогите пожалуйста))) срочно))
Dev c++ ПОМОГИТЕ ПОЖАЛУЙСТА
помогите, пожалуйста, dev c++
Программа на C#, помогите пожалуйста
Помоги пожалуйста по C++
Помогите пожалуйста с изучением C++
Помогите пожалуйста с задачкой на c++
Помогите пожалуйста по c++
Помогите, пожалуйста, C# !