| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 671 人关注过本帖
标题:数的进制转换问题
只看楼主 加入收藏
lixin_2009
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-9-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
数的进制转换问题
编程,将用户输入的一个十进制数转换成二、八、十六、三十二进制数。
要求:(1)十六进制数用0—9和A—F表示。三十二进制用0—9和A—T表示。
      (2)利用递归工作栈的后进先出特性。
(小弟刚学c++,还没学数据结构,对这道题无法下手,望高手指点,谢谢!)
搜索更多相关主题的帖子: 进制 
2009-10-01 17:10
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:20 
#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 编辑 ]

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-10-02 10:34
lixin_2009
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2009-9-3
收藏
得分:0 
谢谢!
2009-10-04 23:27
songxj32
Rank: 2
等 级:论坛游民
帖 子:34
专家分:21
注 册:2009-10-16
收藏
得分:0 
学习了
2009-10-28 17:45
kspliusa
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:98
专家分:178
注 册:2009-9-27
收藏
得分:0 
学习了!
2009-10-28 23:16
快速回复:数的进制转换问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022479 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved