用顺序栈实现十进制数转换成二进制数
程序员文章站
2024-03-18 21:42:16
...
一、实验目的
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;
}
四、实验结果
五、心得
这个十进制转换为二进制数的实验关键在于设计算法,我通过查阅书本上的资料和向同学询问最终敲出了代码,但是仍然存在很多错误,比如出栈的操作一直出不来数据,后面发现是因为被之前的文件调试遗漏的数据影响了,改了文件没有保存导致出不来数据,后面通过多次调试最终成功出栈,十分的有成就感。通过这次实验,我明白了在调试过程中如果遇到错误,要有耐心去找出问题所在并修改。