c++ stacks converting decimal to hexadecimal
Oct 8, 2012 at 12:33am UTC
Okay so all I need help with is the part where the remainder is 10-15 it outputs the number not the letter. I'm new with stacks and my teacher wants us to use this stack example that he gave us and write the conversion ourselves for decimal to octal and decimal to hex. I have already gotten the octal to work doing it the same way without the if statements. Please help all the other websites I've uses suck and tell me to do things that make no sense and would be too complicated for my level. Thank you
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
#include <iostream>
#include <fstream>
using namespace std;
const int maxstack = 51;
class stack_type
{
public :
void clear_stack();
bool empty_stack();
bool full_stack();
void push (int numb);
void pop (int & numb);
int stack[maxstack];
int top;
};
void main()
{
stack_type remainder_stack;
int n, number, remainder;
char response;
remainder_stack.clear_stack();
do
{
cout << "Enter positive integer to convert to base 16: \n\n" ;
cin >> number;
n = number;
cout << number << "\n" ;
while (number != 0)
{
remainder = number % 16;
remainder_stack.push(remainder);
if (remainder==10)
{
remainder='A' ;
remainder=number;
}
else if (remainder==11)
{
remainder='B' ;
remainder=number;
}
else if (remainder==12)
{
remainder='C' ;
remainder=number;
}
else if (remainder==13)
{
remainder='D' ;
remainder=number;
}
else if (remainder==14)
{
remainder='E' ;
remainder=number;
}
else if (remainder==15)
{
remainder='F' ;
remainder=number;
}
number /= 16;
}
cout << "Base 16 representation of " << n << " is " ;
while (!remainder_stack.empty_stack())
{
remainder_stack.pop(remainder);
cout << remainder;
}
cout << endl;
cout << "\nMore (Y or N)? :" ;
cin >> response;
}
while (response=='Y' || response=='y' );
}
void stack_type::clear_stack()
{
top=0;
}
bool stack_type::empty_stack()
{
if (top==0)
return true ;
else
return false ;
}
bool stack_type::full_stack()
{
if (top==maxstack-1)
return true ;
else
return false ;
}
void stack_type::push (int numb)
{
top = top + 1;
stack[top] = numb;
}
void stack_type::pop (int & numb)
{
numb = stack[top];
top = top - 1;
}
Topic archived. No new replies allowed.