Задать вопрос
xheirt
@xheirt
Java, Python

Функция не выводит отрицательные значения стека?

Есть функция, которая должна отбирать отрицательные значения со всего стека и выводить их на экран, но она просто выводит сообщение что стек пуст, хотя в других функциях, например по поиску чётного стоит та же самая проверка, но работает всё исправно.
Сама функция:
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;
}
  • Вопрос задан
  • 40 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
i229194964
@i229194964
Веб разработчик
В функции funcPlusMinus(), вместо if (isEmpty), необходимо использовать if (isEmpty()), чтобы вызвать функцию isEmpty(), которая проверяет пустой ли стек.
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;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы