Массив в классе Stack, отображающий огромные неверные числа - PullRequest
0 голосов
/ 03 марта 2020

Я пишу класс стека с массивом для преобразования десятичных чисел в двоичные. Я написал команды pu sh, pop и display для него. В основном, когда я получаю ввод и pu sh, который вводит в массив, затем отображает массив, он показывает какое-то огромное неверное число, например 2.51973e-322 или что-то в этом роде. Это одна из моих функций, которая неверна? Или создание самого массива? Я пытался исправить это в течение нескольких дней, и я действительно застрял. Некоторые вещи в моем коде предназначены только для тестирования.

Вот мой код:

main. cpp

#include "stack.h"
#include <iostream>

using namespace std;

int main(void) 
{
    #define SIZE 100
    Stack stack;
    int arr[SIZE] = {};
    int top = 0;
    int entry;
    char again;
    bool quit = false;
    int binaryDigit;

    while(quit == false)
    {

        cout<<"Please enter a number to convert: ";
        cin >> entry;

        //for testing
        stack.push(entry);
        stack.display();

        /*while(entry > 0)
        {
            binaryDigit = entry % 2;
            stack.push(binaryDigit);
            entry = entry / 2;
        }

        */

stack.h

#ifndef Stack_H
#define Stack_H

using namespace std;

class Stack
{
    private:
        int top;
        int SIZE;

    public:

        Stack();
        bool isFull();
        bool isEmpty();
        void push(int num);
        void pop();
        void convert(int num);
        void display();
        int binaryDigit;
        int arr[]; 

};

#endif

и стек. cpp (показаны только функции pu sh, pop, display)

void Stack::push(int num)
{
    if(!isFull())
    {
        arr[top] = num;
        top++;
    }
    else
    {
        cout<<"Stack is full";
    }
}

void Stack::pop()
{
    if(!isEmpty())
    {
        top--;
    }
    else
    {
        cout<<"Stack is empty";
    }
}

void Stack::display()
{
    if(isEmpty() == true)
    {
        cout<<"Stack empty";
    }
    else
    {
        cout<<arr[top];

        //commented out for testing;
        /*for(int i= top; i <= top; i--)
        {
            cout<<arr[i]<<" ";
        }*/
    }
}

Извините за длинный пост, но я нахожусь в своем уме. Любое руководство будет высоко ценится.

...