鱼鱼啦啦 发表于 2008-6-26 14:51

求助: 利用栈,将十进制数转换成八进制的数

那位高手可以帮忙解决这个问题啊?
  十分感谢!!


利用栈,将十进制数转换成八进制的数
例:十进制转换成八进制:(66)10=(102)8
66/8=8 余 2
8/8=1 余 0
1/8=0 余 1
结果为余数的逆序:102

zjl138 发表于 2008-6-26 15:35

任意进制转换.

[quote][font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#include<iostream>
[/color][color=#0000FF]using namespace [/color][color=#FF0000]std[/color];
[color=#FF0000]#define[/color][color=#FF00FF] stacksize 100   
[/color]typedef [color=#0000FF]int [/color]DataType;   
   
[color=#0000FF]typedef struct   
[/color][color=#800000]{   
    [/color]DataType data[color=#800000][[/color]stacksize[color=#800000]][/color];   
    [color=#0000FF]int [/color]top;   
[color=#800000]}[/color]Stack;   
   
[color=#0000FF]void [/color][color=#008080]Initial[/color](Stack *s)   
[color=#800000]{   
    [/color]s->top=-[color=#8000C0]1[/color];   [color=#008000]
[/color][color=#800000]}   
   
[/color][color=#0000FF]int [/color][color=#008080]Isempty[/color](Stack *s)   
[color=#800000]{   
    [/color][color=#0000FF]return [/color]s->top==-[color=#8000C0]1[/color];   
[color=#800000]}   
   
[/color][color=#0000FF]int [/color][color=#008080]IsFull[/color](Stack *s)   
[color=#800000]{   
    [/color][color=#0000FF]return [/color]s->top==stacksize-[color=#8000C0]1[/color];     [color=#008000]  
[/color][color=#800000]}   
   
[/color][color=#0000FF]void [/color][color=#008080]Push[/color](Stack *s,DataType x)   
[color=#800000]{   
    [/color][color=#0000FF]if[/color]([color=#008080]IsFull[/color](s))   
    [color=#800000]{   
        [/color][color=#FF0000]cout[/color]<<[color=#FF00FF]"栈上溢"[/color];   
        [color=#FF0000]exit[/color]([color=#8000C0]1[/color]);   
    [color=#800000]}   
    [/color]s->data[color=#800000][[/color]++s->top[color=#800000]][/color]=x;   
[color=#800000]}   
   
[/color]DataType [color=#008080]Pop[/color](Stack *s)   
[color=#800000]{   
    [/color][color=#0000FF]if[/color]([color=#008080]Isempty[/color](s))   
    [color=#800000]{   
        [/color][color=#FF0000]cout[/color]<<[color=#FF00FF]"栈为空"[/color];   
        [color=#FF0000]exit[/color]([color=#8000C0]1[/color]);   
    [color=#800000]}   
   
    [/color][color=#0000FF]return [/color]s->data[color=#800000][[/color]s->top--[color=#800000]][/color];   
[color=#800000]}   
   
    [/color][color=#008000]//进制转换函数   
   
[/color][color=#0000FF]void [/color][color=#008080]Conversion[/color]([color=#0000FF]int [/color]i,[color=#0000FF]int [/color]j)   
[color=#800000]{     
    [/color][color=#0000FF]int [/color]k;   
    Stack s;   
    [color=#008080]Initial[/color](&s);   
    [color=#0000FF]while[/color](i)   
    [color=#800000]{   
        [/color][color=#008080]Push[/color](&s,i%j);   
        i=i/j;   
    [color=#800000]}   
    [/color][color=#0000FF]while[/color](![color=#008080]Isempty[/color](&s))   
    [color=#800000]{   
        [/color]k=[color=#008080]Pop[/color](&s);   
        [color=#FF0000]cout[/color]<<k;   
    [color=#800000]}   
    [/color][color=#FF0000]cout[/color]<<[color=#FF0000]endl[/color];
[color=#800000]}   
   
[/color]DataType [color=#008080]top[/color](Stack *s)   
[color=#800000]{   
    [/color][color=#0000FF]if[/color]([color=#008080]Isempty[/color](s))   
    [color=#800000]{   
        [/color][color=#FF0000]cout[/color]<<[color=#FF00FF]"栈为空"[/color];   
        [color=#FF0000]exit[/color]([color=#8000C0]1[/color]);   
    [color=#800000]}   
    [/color][color=#0000FF]return [/color]s->data[color=#800000][[/color]s->top[color=#800000]][/color];   
    [color=#800000]}   
   
   
[/color][color=#0000FF]int [/color][color=#FF0000]main[/color]([color=#0000FF]void[/color])   
[color=#800000]{  
    [/color][color=#0000FF]int [/color]m,n;
    [color=#FF0000]cin[/color]>>m>>n;
    [color=#008080]Conversion[/color](m,n);   
    [color=#008080]system[/color]([color=#FF00FF]"pause"[/color]);
    [color=#0000FF]return [/color][color=#8000C0]0[/color];
[color=#800000]}   [/color][/size][/font][/quote]

[[it] 本帖最后由 zjl138 于 2008-6-26 15:39 编辑 [/it]]

zjl138 发表于 2008-6-26 15:45

再给个递归的吧,以前写的.

[quote]
#include<iostream>   
using namespace std;   
void conversion(int a)   
{   
   if (!a) return;   
   conversion(a/8);   
   cout<<a%8;   
}   
int main(void)   
{   
     int a;   
     cout<<"输入你要转换的数"<<endl;   
     cin>>a;   
     conversion(a);   
     cout<<endl;   
     system("pause");   
     return   0;   
}
[/quote]

鱼鱼啦啦 发表于 2008-6-27 21:14

你这好像是高级java啊,我们没学过这种类型的那~~有点看不懂的那~~
唔~~[em08]

orzorz 发表于 2008-6-27 21:39

[quote][bo][un]鱼鱼啦啦[/un] 在 2008-6-27 21:14 的发言:[/bo]

你这好像是高级java啊,我们没学过这种类型的那~~有点看不懂的那~~
唔~~[em08] [/quote]
orz....
java~? ho ho~

页: [1]

编程论坛