十进制数任意转换2-9进制数——栈的应用
2014-08-15 09:08
225 查看
最近看了看数据结构,用栈的基本原理写了一个进制转换程序,在此分享以下!!
头文件stdafx.h如下
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#define stack_init_size 100
#define stackincreament 10
//定义栈的结构体
typedef struct
{
int *base;
int *top;
int stacksize;
}sqstack;
int initstack(sqstack &s);
int push(sqstack &s,int e);
int pop(sqstack &s,int &e);
源文件3.2ds.cpp如下
// 3.2ds.cpp : 定义控制台应用程序的入口点。
//十进制数任意转换为2-9进制数
#include "stdafx.h"
#include"iostream"
using namespace std;
//初始化栈
int initstack(sqstack &s)
{
s.base=(int *)malloc(stack_init_size *sizeof(int));
if(!s.base)
{cout<<"init error!!\n";
exit(0);
}else
s.top=s.base;
s.stacksize=stack_init_size;
return 0;
}
//入栈
int push(sqstack &s,int e){
if(s.top-s.base>=s.stacksize){
s.base=(int *)realloc(s.base,(s.stacksize+stackincreament)*sizeof(int));
if(!s.base)cout<<"relloc error!!\n";
s.top=s.base+s.stacksize;
s.stacksize+=stackincreament;
}
*s.top++=e;
return 0;
}
//出栈
int pop(sqstack &s,int &e)
{
if(s.top==s.base)cout<<"pop error!!\n";
e=*--s.top;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
sqstack st;
initstack(st);//初始化栈
int num,divnum,modnum,j,e;
cout<<"请输入要转换的进制数(2-9):";
cin>>j;
cout<<"请输入原数据:";
cin>>num;
cout<<"转换结果如下:"<<endl;
cout<<"("<<num<<")10=(";
//将对j取余的数入栈
while(num){
push(st,num%j);
num=num/j;
}
//出栈并且输出结果
while(st.base!=st.top){
pop(st,e);
cout<<e;
}
cout<<")"<<j<<endl;
return 0;
}
测试结果如下:
感悟:使用相除法,将除得的结果依次入栈,然后依次出栈,即可输出转换结果。
头文件stdafx.h如下
#pragma once
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
#define stack_init_size 100
#define stackincreament 10
//定义栈的结构体
typedef struct
{
int *base;
int *top;
int stacksize;
}sqstack;
int initstack(sqstack &s);
int push(sqstack &s,int e);
int pop(sqstack &s,int &e);
源文件3.2ds.cpp如下
// 3.2ds.cpp : 定义控制台应用程序的入口点。
//十进制数任意转换为2-9进制数
#include "stdafx.h"
#include"iostream"
using namespace std;
//初始化栈
int initstack(sqstack &s)
{
s.base=(int *)malloc(stack_init_size *sizeof(int));
if(!s.base)
{cout<<"init error!!\n";
exit(0);
}else
s.top=s.base;
s.stacksize=stack_init_size;
return 0;
}
//入栈
int push(sqstack &s,int e){
if(s.top-s.base>=s.stacksize){
s.base=(int *)realloc(s.base,(s.stacksize+stackincreament)*sizeof(int));
if(!s.base)cout<<"relloc error!!\n";
s.top=s.base+s.stacksize;
s.stacksize+=stackincreament;
}
*s.top++=e;
return 0;
}
//出栈
int pop(sqstack &s,int &e)
{
if(s.top==s.base)cout<<"pop error!!\n";
e=*--s.top;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
sqstack st;
initstack(st);//初始化栈
int num,divnum,modnum,j,e;
cout<<"请输入要转换的进制数(2-9):";
cin>>j;
cout<<"请输入原数据:";
cin>>num;
cout<<"转换结果如下:"<<endl;
cout<<"("<<num<<")10=(";
//将对j取余的数入栈
while(num){
push(st,num%j);
num=num/j;
}
//出栈并且输出结果
while(st.base!=st.top){
pop(st,e);
cout<<e;
}
cout<<")"<<j<<endl;
return 0;
}
测试结果如下:
感悟:使用相除法,将除得的结果依次入栈,然后依次出栈,即可输出转换结果。
相关文章推荐
- C++实现将十进制数转换为小于等于九的任意进制
- [C++ 写一个函数将十进制数转换为2到9的任意进制数 练习list容器]
- 十进制数转换成任意进制数
- 使用链栈来对十进制数进行任意进制的转换
- 栈的应用——数值转换为任意进制
- 面试题:编写一个将十进制数转换为任意进制的算法或函数
- 将十进制数转换为任意进制数
- 十进制转换成任意进制(栈的应用)
- C语言从键盘输入一个十进制数将其转换为任意进制数输出
- 用栈实现将十进制数转换为任意进制数(2,8,16...).
- 十进制数转换成任意进制 (基础题) HLG 1937
- C++趣味编程算法//求一个十进制数转换为任意进制数
- 十进制数转换任意进制数
- 不同进制数的转换及应用
- 十进制任意整数类型向常见数值类型进制转换的通用办法
- 任意十六进制数转换成十进制数----不管你输入多长都能转换
- 用C语言代码实现n进制数转换为十进制数
- 用C语言代码实现n进制数转换为十进制数
- 将10进制数转换为任意进制数进行显示
- 任意进制间的转换