При вводе 0 выводится не число на вершине стека, а какой-то мусор. В чём проблема?
#include <iostream>
#define size 50
using namespace std;
void push(int i);
int pop();
int *tos, *p1, stack[size];
int main()
{
setlocale(LC_ALL, "rus");
int value;
tos = stack;
p1 = stack;
do
{
cout << "Vvedite chislo:";
cin >> value;
if (value != 0) push(value);
else cout << "Chislo na vershine steka ravno " << pop() << endl;
} while (value != -1);
system("pause");
return 0;
}
void push(int i)
{
p1++;
if (p1 == (tos + size))
{
cout << "Stek perepolnen" << endl;
exit(1);
}
*p1 = i;
}
int pop()
{
if (p1 == tos)
{
cout << "Stek ischerpan" << endl;
exit(1);
}
p1--;
return *p1;
}
pop()
не возвращает никакого значения (хотя должен возвращать int
), приводя к неопределённому поведению.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У Microsoft есть статья, посвященная работе с нативным кодов вNet Core на различных платформах
Друзья,вылетает программа после ввода поля tabl[i]name; Не могу понять в чём проблема
Помогите, пожалуйста, исправить код моей первой программыОна должна анализировать буфер обмена на наличие в нём 5-ти значного числа начинающегося...
Как создать AutoCompleteTextView внутри кастомного меню?