hi all check out the code I've put together
alright it works for characters but when it hits an integer I get ascii symbols would any of you have some suggestions on how to remedy this situationCode:#include <iostream> #include <iomanip> using namespace std; //===============================CLASSE DEFINITION FOR STACK============================================================ template <class T, int n> class stack { private: T elt[n]; int counter; public: void clearstack() { counter = -1; } //INITIALIZE COUNTER bool emptystack() { return counter==-1?true:false; } //EVALUATION IF STACK IS EMPTY bool fullstack() { return counter== n-1?true:false; } //EVALUATION IF STACK IS FULL void push(T x) { counter++; elt[counter] = x; } //FUNCTION TO ADD TO STACK T pop() { T x; x= elt[counter]; counter--;return x; } //FUNCTION TO POP THE STACK }; //====================================================================================================================== int main() { int q, m, Z; //THREE VARIABLES M Q AND P DECLARED FOR PUSH AND POP OPERATIONS char j; //VARIABLE J TO DETERMINE WETHER TO CONTINUE PROGRAM OR NOT char k; //VARIABLE K TO DETERMINE TYPE OF OPERATION BINARY OCTAL OR HEXADECIMAL int z; //VARIALBE Z TO USE IN HEXADECIMAL OPERATIONS SPECIFICALLY char p; //VARIABLE P FOR POP OPERATIONS stack <int, 10> s; //OBJECT OF STACK TYPE DECLARED while(j!='n') //BEGINNING OF WHILE LOOP TO CONTINUE PROGRAM UNTIL VARIABLE J IS EQUAL TO 'n' { //======================================================================================================================= cout<<"===========================Conversion Menu================================"<<endl; cout<<"1.Decimal to binary"<<endl; cout<<"2.Decimal to octal"<<endl; cout<<"3.Decimal to hexadecimal"<<endl; cout<<"4.Exit"<<endl; cin>>k; //REQUEST TO USER TO ENTER THE TYPE OF OPERATION switch(k) //SWITCH STATEMENT USED TO RUN TYPE OF OPERATION CHOSEN BY USER { //======================================================================================================================= case '1': //CASE 1 FOR BINARY OPERATIONS s.clearstack(); cout<<"Enter a number to convert: "; cin>>m; while( !s.fullstack() ) { q = m % 2; s.push(q); m = m / 2; } while(!s.emptystack()) { p = s.pop(); cout<<p; } cout<<endl; break; //======================================================================================================================= case '2': //CASE 2 FOR OCTAL OPERATIONS s.clearstack(); cout<<"Enter a number to convert: "; cin>>m; while( !s.fullstack() ) { q = m % 8; s.push(q); m = m / 8; } while(!s.emptystack()) { p = s.pop(); cout<<p; } cout<<endl; break; //======================================================================================================================= case '3': //CASE 3 FOR HEXADECIMAL OPERATIONS s.clearstack(); cout<<"Enter a number to convert: "; cin>>m; while( !s.fullstack() ) { if (m % 16< 10 || m % 16>15) { Z=m%16; s.push(Z);m = m / 16; } else if(m % 16>= 10 || m % 16<=15) { z = m % 16; switch (z) { case 10: z='A'; s.push(z); m = m / 16; break; case 11: z='B'; s.push(z); m = m / 16; break; case 12: z='C'; s.push(z); m = m / 16;break; case 13: z='D'; s.push(z); m = m / 16;break; case 14: z='E'; s.push(z); m = m / 16;break; case 15: z='C'; s.push(z); m = m / 16;break; } } } while(!s.emptystack()) { p = s.pop(); cout<<p; } cout<<endl; case '4': return 0; break; } cout<<"\nPRESS 'y' TO CONTINUE: "; cin>>j; while(j !='y') { cout<<"\nYou entered an invalid response:"; cout<<"\nPlease re-enter your choice: "; cin>>j; } } }#include <iostream> #include <iomanip> using namespace std; //===============================CLASSE DEFINITION FOR STACK============================================================ template <class T, int n> class stack { private: T elt[n]; int counter; public: void clearstack() { counter = -1; } //INITIALIZE COUNTER bool emptystack() { return counter==-1?true:false; } //EVALUATION IF STACK IS EMPTY bool fullstack() { return counter== n-1?true:false; } //EVALUATION IF STACK IS FULL void push(T x) { counter++; elt[counter] = x; } //FUNCTION TO ADD TO STACK T pop() { T x; x= elt[counter]; counter--;return x; } //FUNCTION TO POP THE STACK }; //====================================================================================================================== int main() { int q, m, Z; //THREE VARIABLES M Q AND P DECLARED FOR PUSH AND POP OPERATIONS char j; //VARIABLE J TO DETERMINE WETHER TO CONTINUE PROGRAM OR NOT char k; //VARIABLE K TO DETERMINE TYPE OF OPERATION BINARY OCTAL OR HEXADECIMAL int z; //VARIALBE Z TO USE IN HEXADECIMAL OPERATIONS SPECIFICALLY char p; //VARIABLE P FOR POP OPERATIONS stack <int, 10> s; //OBJECT OF STACK TYPE DECLARED while(j!='n') //BEGINNING OF WHILE LOOP TO CONTINUE PROGRAM UNTIL VARIABLE J IS EQUAL TO 'n' { //======================================================================================================================= cout<<"===========================Conversion Menu================================"<<endl; cout<<"1.Decimal to binary"<<endl; cout<<"2.Decimal to octal"<<endl; cout<<"3.Decimal to hexadecimal"<<endl; cout<<"4.Exit"<<endl; cin>>k; //REQUEST TO USER TO ENTER THE TYPE OF OPERATION switch(k) //SWITCH STATEMENT USED TO RUN TYPE OF OPERATION CHOSEN BY USER { //======================================================================================================================= case '1': //CASE 1 FOR BINARY OPERATIONS s.clearstack(); cout<<"Enter a number to convert: "; cin>>m; while( !s.fullstack() ) { q = m % 2; s.push(q); m = m / 2; } while(!s.emptystack()) { p = s.pop(); cout<<p; } cout<<endl; break; //======================================================================================================================= case '2': //CASE 2 FOR OCTAL OPERATIONS s.clearstack(); cout<<"Enter a number to convert: "; cin>>m; while( !s.fullstack() ) { q = m % 8; s.push(q); m = m / 8; } while(!s.emptystack()) { p = s.pop(); cout<<p; } cout<<endl; break; //======================================================================================================================= case '3': //CASE 3 FOR HEXADECIMAL OPERATIONS s.clearstack(); cout<<"Enter a number to convert: "; cin>>m; while( !s.fullstack() ) { if (m % 16< 10 || m % 16>15) { Z=m%16; s.push(Z);m = m / 16; } else if(m % 16>= 10 || m % 16<=15) { z = m % 16; switch (z) { case 10: z='A'; s.push(z); m = m / 16; break; case 11: z='B'; s.push(z); m = m / 16; break; case 12: z='C'; s.push(z); m = m / 16;break; case 13: z='D'; s.push(z); m = m / 16;break; case 14: z='E'; s.push(z); m = m / 16;break; case 15: z='C'; s.push(z); m = m / 16;break; } } } while(!s.emptystack()) { p = s.pop(); cout<<p; } cout<<endl; case '4': return 0; break; } cout<<"\nPRESS 'y' TO CONTINUE: "; cin>>j; while(j !='y') { cout<<"\nYou entered an invalid response:"; cout<<"\nPlease re-enter your choice: "; cin>>j; } } }



LinkBack URL
About LinkBacks


