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

一、实验目的

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;
} 

四、实验结果



五、心得

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

阅读更多
换一批

没有更多推荐了,返回首页