#include<iostream>
using namespace std;
class D2Other
{
public:
D2Other(int number);
void D2B();//十进制转二进制
void D2O();//十进制转八进制
void D2H();//十进制转十六进制
void D2Du();//十进制转三十二进制
private:
void change(int n,int num);//进行转换运算
void push(char c);//进栈
char pop();//出栈
void print();//输出转换的结果
bool isEmpty();
int num;
char result[100];
int count;
};
D2Other::D2Other(int number):num(number),count(0){}
void D2Other::print()
{
cout<<"转换结果: ";
while(!isEmpty())
cout<<pop();
cout<<"\n";
}
void D2Other::D2B()
{
count=0;
change(2,num);
print();
}
void D2Other::D2O()
{
count=0;
change(8,num);
print();
}
void D2Other::D2H()
{
count=0;
change(16,num);
print();
}
void D2Other::D2Du()
{
count=0;
change(32,num);
print();
}
void D2Other::change(int n,int num)
{
if(n!=2&&n!=8&&n!=16&&n!=32)
{
cout<<"输入要转换的进制不正确"<<'\n';
return;
}
int temp = num%n;
char c;
if(temp>9)
c = char('A'+(temp-10));
else
c = num%n+'0';
push(c);
num = num/n;
if(num>0)
change(n,num);
}
void D2Other::push(char c)
{
if(count<100)
result[count++] = c;
else
cout<<"堆栈已满"<<'\n';
}
char D2Other::pop()
{
if(count>0)
return result[--count];
else
cout<<"堆栈已空"<<'\n';
}
bool D2Other::isEmpty()
{
if(count<=0)
return true;
return false;
}
main(void)
{
D2Other d(40);
d.D2B();
d.D2O();
d.D2H();
d.D2Du();
}
[
本帖最后由 flyingcloude 于 2009-10-2 10:54 编辑 ]