Есть функция, которая должна отбирать отрицательные значения со всего стека и выводить их на экран, но она просто выводит сообщение что стек пуст, хотя в других функциях, например по поиску чётного стоит та же самая проверка, но работает всё исправно.
Сама функция:
void funcPlusMinus()
{
if (isEmpty) {
cout << "The stack is empty" << endl;
}
else {
Stack* temp = top;
do {
if (temp->item >= 0) {
cout << temp->item << " ";
}
temp = temp->down;
} while (temp != NULL);
cout << endl;
}
}
мейн:
void main()
{
setlocale(LC_ALL, "rus");
for (;;) {
cout << "1 - Заполнение ранд\n2 - Удалить\n3 - Вывод\n4 - Четность\n5 - Нечет\n6 - Вставка\n7 - Разделение на + и -\n0 - Выход\n";
int choice; cin >> choice;
int toRemove;
switch (choice) {
case 1: for (int i = 0; i < 100; i++) push(rand() % 101 - 50); break;
case 2: pop(); break;
case 3: printStack(); break;
case 4: chet(); break;
case 5: printnechet(); break;
case 6: cout << "Введите элемент: "; int newItem; cin >> newItem; push(newItem); break;
case 7: funcPlusMinus(); break;
case 0: exit(EXIT_SUCCESS);
default: cout << "Ошибка\n";
}
system("pause");
system("cls");
}
}
И для примера функция, которая подсчитывает количество всех чётных чисел:
void chet() {
int n = 0;
if (isEmpty()) {
cout << "The stack is empty" << endl;
}
else {
Stack* temp = top;
do {
if (temp->item % 2 == 0)
{
n++;
}
temp = temp->down;
} while (temp != NULL);
cout << endl;
}
cout << n << endl;
}