十进制转二进制的实现(实验3.3)

一、实验目的
熟练掌栈的结构特点,学会使用栈解决实际问题。实现十进制转二进制的功能。
二、实验内容
十进制转二进制的一个算法是不断的去余,再逆序拼接在一起。注意,是逆序,就是先算出来的后拼接。这个特性正和栈的先进后出相匹配,只要把取余的出来的数压栈,计算完之后,再逐个弹栈出来,拼接在一起,就可以完成这一功能。之前写过一个顺序栈的C++模板,这里给它增加一个函数方法。下面给给出了上一版本的顺序表模板连接。

顺序栈模板1.0

SeqStack.h 的public中添加:

// 进制转换
    void Decimaltor(DataType n,int r);

SeqStack.cpp中添加上面方法的实现:

// 在之前模板基础上增加的功能
template <class DataType>
void SeqStack<DataType>::Decimaltor(DataType n,int r)
{
    top = -1;
    int k;
    while(n != 0) {
        k = n % r;
        Push(k);
        n = n / r;
    }
    while(top != -1) {
        cout << Pop() << '\t';
    }
}

main.cpp

#include <iostream>
#include "SeqStack.cpp"
using namespace std;

int main(int argc, const char * argv[]) {
    SeqStack<int> stack = SeqStack<int>();
    int n, r;
    cout << "请输入一个十进制数字 : " << endl;
    cin >> n;
    cout << "需要转换成的进制 : " << endl;
    cin >> r;
    stack.Decimaltor(n, r);
    cout << endl;
    return 0;
}

三、心得和体会
一开始看到十进制转二进制这个题目出现在栈和队列的练习中,一开始我还是有疑惑的,这转换进制和这个数据结构有关系吗?可是仔细一想进制转换的算法,突然发现其中的相似的先进后出的特点。当然,我写的这个模板也可以应用于十进制转任意进制。这里就体现了C++模板的便利,栈的用途。

在空闲的时候更新的地方,大家可以捧一下场,嘿嘿~

新世界的大门 (๑•̀ㅂ•́)و✧

    原文作者:进制转换
    原文地址: https://blog.csdn.net/weixin_37420268/article/details/78383074
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞