用顺序栈实现十进制数转换成二进制数

来源:互联网 发布:qq飞车朱雀数据 编辑:程序博客网 时间:2024/04/29 15:19

一、实验目的

1、 熟练掌栈的结构特点,掌握栈的顺序存储和链式存储结构和实现。2、 学会使用栈解决实际问题。


二、实验内容

设计算法并写出代码,实现一个十将二进制转换成2进制数。


三、源代码

#include <iostream>using namespace std;const int StackSize=10;template<class DataType>class SeqStack{public:SeqStack();~SeqStack(){};void Push(DataType x);DataType Pop();void Decimaltor(int num,int r);private:DataType data[StackSize];int top;};template<class DataType>SeqStack<DataType>::SeqStack(){top=-1;}template<class DataType>void SeqStack<DataType>::Push(DataType x){if(top==StackSize-1)throw"上溢";top++;data[top]=x;}template<class DataType>DataType SeqStack<DataType>::Pop(){DataType x;if(top==-1)throw"下溢";x=data[top--];return x;}template<class DataType>void SeqStack<DataType>::Decimaltor(int num,int r){int k;top=-1;while(num!=0){k=num%r;//得到余数 Push(k);num=num/r;}while(top!=-1){cout<<Pop();}}int main(){int num;int r;SeqStack<int>S;cout<<"请输入一个十进制的数字:"<<endl;cin>>num;    cout<<"请问你要转换为几进制"<<endl;    cin>>r; S.Decimaltor(num,r);     return 0;} 

四、实验结果



五、心得

     这个十进制转换为二进制数的实验关键在于设计算法,我通过查阅书本上的资料和向同学询问最终敲出了代码,但是仍然存在很多错误,比如出栈的操作一直出不来数据,后面发现是因为被之前的文件调试遗漏的数据影响了,改了文件没有保存导致出不来数据,后面通过多次调试最终成功出栈,十分的有成就感。通过这次实验,我明白了在调试过程中如果遇到错误,要有耐心去找出问题所在并修改。

原创粉丝点击