Я пишу класс стека с массивом для преобразования десятичных чисел в двоичные. Я написал команды 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]<<" ";
}*/
}
}
Извините за длинный пост, но я нахожусь в своем уме. Любое руководство будет высоко ценится.