欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 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;
} 

四、实验结果

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

五、心得

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