数数制转换程序.docx

上传人:b****1 文档编号:2791042 上传时间:2023-05-04 格式:DOCX 页数:17 大小:18.51KB
下载 相关 举报
数数制转换程序.docx_第1页
第1页 / 共17页
数数制转换程序.docx_第2页
第2页 / 共17页
数数制转换程序.docx_第3页
第3页 / 共17页
数数制转换程序.docx_第4页
第4页 / 共17页
数数制转换程序.docx_第5页
第5页 / 共17页
数数制转换程序.docx_第6页
第6页 / 共17页
数数制转换程序.docx_第7页
第7页 / 共17页
数数制转换程序.docx_第8页
第8页 / 共17页
数数制转换程序.docx_第9页
第9页 / 共17页
数数制转换程序.docx_第10页
第10页 / 共17页
数数制转换程序.docx_第11页
第11页 / 共17页
数数制转换程序.docx_第12页
第12页 / 共17页
数数制转换程序.docx_第13页
第13页 / 共17页
数数制转换程序.docx_第14页
第14页 / 共17页
数数制转换程序.docx_第15页
第15页 / 共17页
数数制转换程序.docx_第16页
第16页 / 共17页
数数制转换程序.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数数制转换程序.docx

《数数制转换程序.docx》由会员分享,可在线阅读,更多相关《数数制转换程序.docx(17页珍藏版)》请在冰点文库上搜索。

数数制转换程序.docx

数数制转换程序

程序代码:

此数数制转换程序包括1个源文件(.cpp)、2个头文件(.h)。

******************************************Transform类********************************************

源代码包含一个Transform类:

#include

#include

#include"Stack.h"//利用到栈,把头文件Stack包含进来

usingnamespacestd;

 

classTransform

{

public:

Transform(){};//构造函数

~Transform(){};//析构函数

voidTr10(charc[],doublem);//10进制数据转换成其他进制

doubleTrn_10(charc[],intn);//其他进制数据转换成10进制数据

voidUseStack(intten,intbase);//应用栈原理把10进制数据转换成其他进制数据

voidStack_10();//调用UseStack函数的函数

voidBegin();//主界面函数

voidEnd();//界面结束函数

voidUsetranstion();//调用一般函数进行各进制间的转换

voidInformation();//课程设计信息函数

intBehead();//调用其他函数应用函数

private:

voidToUpper(char*c);//将小写字母a-z转换为A-Z

voidTrint(intm,intn);//转换数据的整数部分

voidTrdig(doublem,intn);//转换数据的小数部分

voidIntdig(doublem,intn);//合并转换成的整数和小数部分

};

 

voidTransform:

:

Trint(intm,intn)//转换数据的整数部分

{

if(m)

{

Trint(m/n,n);

if(n<10)//如果要转换成的进制数据小于10,则直接输出那个数据.

cout<

else//如果要转换成的进制数据大于等于10,即为16进制,则10到15相应转换为A到F再输出.

m%n>=10?

cout<

cout<

}

}

 

voidTransform:

:

Trdig(doublem,intn)//转换数据的小数部分

{

while(m)

{

if(n<10)//如果要转换成的进制数据小于10,则直接输出那个数据.

cout<

else//如果要转换成的进制数据大于等于10,即为16进制,则10到15相应转换为A到F再输出.

m*n>=10?

cout<

cout<

m=m*n-int(m*n);

}

}

 

voidTransform:

:

Intdig(doublem,intn)//合并转换成的整数和小数部分

{

Trint(m,n);//转换整数部分并输出

if(int(m)==m)

return;

cout<<'.';//输出小数点

m-=int(m);

Trdig(m,n);//转换小数部分,并接在小数点后面

}

 

voidTransform:

:

Tr10(charc[],doublem)//10进制数据转换成其他进制数据

{

cout<<"-----"<

cout<<"-----"<

cout<<"-----"<

}

 

doubleTransform:

:

Trn_10(charc[],intn)//其他进制数据转换成10进制数据

{

charz[100];

inti=0,j;

doubleb=0;

cout<<"-----"<

while(*c!

='.'&&*c!

='\0')z[i++]=*c++;i--;

if(*c=='\0')c--;

for(j=0;j<=i;j++)

if(z[j]<65)b+=(z[j]-48)*pow(n,i-j);//调用系统的幂函数

elseb+=(z[j]-55)*pow(n,i-j);

for(c++,j=-1;*c!

='\0';c++,j--)

if(*c<65)b+=(*c-48)*pow(n,j);

else

b+=(*c-55)*pow(n,j);

cout<

returnb;

}

 

voidTransform:

:

UseStack(intten,intbase)//应用栈原理把10进制数据转换成其他进制数据

{

intm=ten;

intval;

cout<

cout<<"-----所输入的进制数是:

"<

Stackastack(20);//声明一个栈的对象

while(m!

=0)//如果要转换的数据不为0,则进入循环

{

val=m%base;//需要转换的10进制数值除以要转换成的进制,并取余数

astack.Push(val);//将余数进栈

m=m/base;//m等于商,取整

}

cout<<"-----转换成"<

";

while(!

astack.IsEmpty())//如果栈不为空,则进入循环

{

val=astack.Pop();//将数据出栈

if(val>9)//如果出栈数大于9,则将10到15的数转换成A到F.

{

switch(val)

{

case10:

cout<<"A";

break;

case11:

cout<<"B";

break;

case12:

cout<<"C";

break;

case13:

cout<<"D";

break;

case14:

cout<<"E";

break;

case15:

cout<<"F";

break;

}

}

else

cout<

}

cout<

cout<

cout<<"////////////////////////*End*////////////////////////\n";

cout<<"////////////////////////////////////////////////////////////////////"<

cout<<"按1返回主界面,按2结束程序:

";

inth;

do

{

cin>>h;//课程设计信息界面给出选择,用户输入选项

switch(h)

{

case1:

//课程设计信息界面,选1返回主界面。

system("cls");//调用系统函数进行清屏

Behead();

break;

case2:

//课程设计信息界面,选2结束程序。

End();

break;

default:

cout<<"请重新正确选择!

";//如果输入1,2以外的选项,则进入循环并重新输入选项。

break;

}

}while(h<1||h>2);

}

 

voidTransform:

:

Stack_10()//调用UseStack函数的函数

{

inta(0),b(0);

cout<<"////////////////////////////////////////////////////////////////////"<

cout<<"/////////////////利用栈进行10进制的转换/////////////////"<

cout<<"//////此处只进行10进制正整数转换成2或8或16进制//////"<

cout<

cout<<"-----请输入你所要转换的10进制数:

";

cin>>a;

cout<

请输入:

";

do

{

cin>>b;

if(b!

=2&&b!

=8&&b!

=16)//如果要转换成的进制不符合,则提示错误

{

cout<

cout<<"-----进制数输入错误!

请重新输入:

";

}

}while(b!

=2&&b!

=8&&b!

=16);

UseStack(a,b);

}

 

voidTransform:

:

Begin()//主界面函数

{

cout<<"///////////////////////////////////////////////////////"<

cout<

cout<<"//////////////欢迎进入数制转换系统//////////////"<

cout<

cout<<"★按1进行各种数制的转换"<

cout<

cout<<"★按2利用栈进行10进制的转换"<

cout<

cout<<"★按3了解课程设计信息"<

cout<

cout<<"★按4退出本程序"<

cout<

cout<<"///////////////////////////////////////////////////////";

}

 

voidTransform:

:

End()//界面结束函数

{

system("cls");//调用系统函数进行清屏

cout<<"谢谢使用本程序,再见!

"<

}

voidTransform:

:

ToUpper(char*c)////将小写字母a-z转换为A-Z

{

intlen=strlen(c);

intoffset='A'-'a';

for(inti=0;i

{

if(c[i]>='a'&&c[i]<='z')

{

c[i]+=offset;

}

}

}

voidTransform:

:

Usetranstion()//进行转换

{

cout<<"///////////////////////////////////////////////////////"<

cout<<"////////////////欢迎使用数制转换////////////////"<

cout<

charc[100];

intn;

cout<<"\n-----请输入该数值的进制(2或8或10或16进制):

";

cin>>n;

cout<<"\n-----请输入要你所要转换的数据值(0-9,A-F,a-f):

";

cin>>c;

if(n==16)//16进制

{

ToUpper(c);//将小写字母a-z转换为A-Z

}

cout<

Tr10(c,Trn_10(c,n));

cout<

cout<

cout<<"//////////////////////*End*//////////////////////\n";

cout<<"///////////////////////////////////////////////////////"<

cout<

cout<<"按1返回主界面,按2结束程序:

";

}

 

voidTransform:

:

Information()//课程设计信息

{

cout<<"///////////////////////////////////////////////////////"<

cout<<"////////////////课程设计信息////////////////"<

cout<<"★功能:

进行数制转换"<

cout<<"★原理:

1.一般函数及系统函数"<

cout<<"2.栈"<

cout<<"3.分步求取"<

cout<<"★课程:

数据结构"<

cout<<"★指导老师:

吴**"<

cout<<"★制作人:

陈**,彭**"<

cout<<"★时间:

2008年1月1日"<

cout<<"///////////////////////////////////////////////////////"<

cout<

}

 

intTransform:

:

Behead()//应用函数,递归调用其他函数。

{

Begin();//调用Begin函数,显示主界面。

inta;

do

{

cin>>a;//主界面给出选择,用户输入选项

switch(a)

{

case1:

//主界面,选1进入数制转换界面。

system("cls");//调用系统函数进行清屏

Usetranstion();

intd;

do

{

cin>>d;//数制转换界面给出选择,用户输入选项

switch(d)

{

case1:

//数制转换界面,选1返回主界面。

system("cls");//调用系统函数进行清屏

Behead();

break;

case2:

//数制转换界面,选2结束程序

End();

break;

default:

cout<<"请重新正确选择!

";//如果输入1,2以外的选项,则进入循环并重新输入选项。

break;

}

}while(d<1||d>2);

break;

case3:

//主界面,选2进入课程设计信息界面。

system("cls");//调用系统函数进行清屏

Information();

cout<<"按1返回主界面,按2结束程序:

";

intb;

do

{

cin>>b;//课程设计信息界面给出选择,用户输入选项

switch(b)

{

case1:

//课程设计信息界面,选1返回主界面。

system("cls");//调用系统函数进行清屏

Behead();

break;

case2:

//课程设计信息界面,选2结束程序。

End();

break;

default:

cout<<"请重新正确选择!

";//如果输入1,2以外的选项,则进入循环并重新输入选项。

break;

}

}while(b<1||b>2);

break;

case4:

//主界面,选3结束程序。

End();

break;

case2:

system("cls");//调用系统函数进行清屏

Stack_10();

break;

default:

cout<<"请重新正确选择!

";//如果输入1,2,3以外的选项,则进入循环并重新输入选项。

break;

}

}while(a<1||a>4);

return0;

}

 

******************************************Transform类********************************************

========================stack===========================

源程序利用了栈,栈的头文件的代码和解释如下:

#pragmaonce

#include

#include

usingnamespacestd;

template

classStack//顺序栈的类定义

{

public:

Stack(int=20);//建立一个空栈,其最大体积maxSzie的缺省值为10

virtual~Stack(){delete[]elements;}

voidPush(constType&item);

//如果IsFull(),则执行StackFull();否则把item插入到栈的栈顶

TypePop();//如果IsEmpty(),则执行StackEmpty()并返回0;否则退出并返回栈顶的值

TypeGetTop();//如果IsEmpty(),则返回0;否则返回栈顶元素的值

voidMakeEmpty(){top=-1;}//置空栈

intIsEmpty()const{returntop==-1;}

//如果栈中元素个数等于0,则返回True

(1),否则返回False(0)

intIsFull()const{returntop==maxSize-1;}

//如果栈中元素个数等于maxSize,则返回True

(1),否则返回False(0)

private:

inttop;//在顺序存储分配下是栈顶指针

Type*elements;//在顺序存储分配下是存放栈中元素的栈数组

intmaxSize;//栈最大可容纳元素个数

};

 

template

Stack:

:

Stack(ints):

top(-1),maxSize(s)

//建立一个最大尺寸为s的空栈,若分配不成功则错误处理

{

elements=newType[maxSize];//创建栈空间

assert(elements!

=0);//断言:

动态存储分配成功与否

}

 

template

voidStack:

:

Push(constType&item)

//若栈不满,则将元素item插入到该栈的栈顶,否则出错处理

{

assert(!

IsFull());//断言:

栈不满则继续执行

elements[++top]=item;//栈顶指针先加1,然后按此地址进栈

}

 

template

TypeStack:

:

Pop()

{

assert(!

IsEmpty());//断言:

判栈空否,若断言成立则继续执行

returnelements[top--];//返回栈顶元素的值,同时栈顶指针退1

}

 

template

TypeStack:

:

GetTop()

{

assert(!

IsEmpty());//断言:

判栈空否,若断言成立则继续执行

returnelements[top];//返回栈顶元素的值

}

========================stack===========================

--------------------------------main函数----------------------------------------

该程序的main函数如下:

voidmain()

{

Transforma;//声明一个对象

a.Behead();//对象调用函数

}

--------------------------------main函数----------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2