首页 c++实现任意长整数的四则运算

c++实现任意长整数的四则运算

举报
开通vip

c++实现任意长整数的四则运算..优选实验题目:设计一数据构造可处理任意长度的整数概要设计1.数据构造的定义采用双向链表存储任意长整数。双向链表的定义如下:classDblList{private:DblNode*head,*tail;DblNode*current;intsign;public:DblList();//构造函数~DblList();//析构函数boolCreatList(string);//生成一个双向链表,存储整数intGetCount();//获取整数的长度voidInsert(DblNode*);//从表尾插入一个结点v...

c++实现任意长整数的四则运算
..优选实验题目: 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 一数据构造可处理任意长度的整数概要设计1.数据构造的定义采用双向链 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 存储任意长整数。双向链表的定义如下:classDblList{private:DblNode*head,*tail;DblNode*current;intsign;public:DblList();//构造函数~DblList();//析构函数boolCreatList(string);//生成一个双向链表,存储整数intGetCount();//获取整数的长度voidInsert(DblNode*);//从表尾插入一个结点voidInsertFront(DblNode*);//从表头插入voidClear();//去除该链表voidoperator+(DblList&);//实现两个任意整数的加法voidoperator*(DblList&);//实现两个任意整数的乘法DblList&operator=(DblList&);//重载赋值运算符intpare(DblList&);//两个整数的绝对值比较voidDisplay();//任意长度整数的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 化输出}; 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 :数据的存储,无外乎顺序或者链表。顺序存储时,定义数组无法实现任意长度,而且需要预设一个maxsize,不是特别的方便。所以采用链式存储方式。而且任意长数据通过字符串输入。在链表的每一个结点中,数据域是在该数位上的数字大小。主要功能模块的功能任意长整数的输入任意长整数的标准化输出两个整数的加法两个整数的乘法三.详细设计〔主模块 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图〕使用说明及测试结果1.使用说明:点击翻开应用程序pro1.exe。依次输入任意两个整数〔例如123456,+1234567〕,按回车,会出现菜单,如以下图:按‘1’那么实现两整数的加法按‘2’那么实现两整数的乘法按‘#’完毕注:菜单可重复出现直至‘#’退出。实现加法,乘法如以下图:2.测试结果:(1)123456(2)+1234567(3)-987654321(4)12a3+注:当输入错误时,允许重新输入。源程序/*主函数*//***************************************************/#include"cal.h"voidmain(){strings;stringp;DblListlist1;while(1){//输入错误时,允许重新输入cout<<"Inputnum1"<>s;boolok1=list1.CreatList(s);if(!ok1){cout<<"error!"<>p;boolok2=list2.CreatList(p);if(!ok2){cout<<"error!"<>choose;if(choose=="1"){list1+list2;break;}elseif(choose=="2"){list1*list2;break;}elseif(choose=="#"){return;}else{cout<<"输入有误,请重新输入!!"<#include#includeusingnamespacestd;structDblNode{intdata;DblNode*prior;DblNode*next;};boolIsNum(chara){//判断字符a是否是便是数字ints=a-'0';if(s>=0&&s<10)returntrue;elsereturnfalse;}boolIsInt(stringa){//判断字符串a是否表达一串数字boolJud=1;inti=1;chars=a[0];if(a=="+"||a=="-")returnfalse;if(s=='+'||s=='-'){}elseif(s>='1'&&s<='9'){}elseif(a[0]=='0'&&a[1]=='\0')returntrue;elsereturnfalse;while(a[i]!='\0'){Jud=IsNum(a[i]);if(Jud==0)returnfalse;i++;}returntrue;}intJudSign(strings){//返回数字的符号if(s[0]=='-')return-1;elseif(s[0]=='0'&&s[1]=='\0')return0;elsereturn1;}intCtoI(chara){inti=a-'0';returni;}classDblList{//定义一个双向链表类,存储任意长度的数字private://并可以进展标准化输出和加法,乘法。DblNode*head,*tail;DblNode*current;intsign;public:DblList();//构造函数~DblList();//析构函数boolCreatList(string);//生成一个双向链表intGetCount();//获取整数的长度voidInsert(DblNode*);//从表尾插入一个结点voidInsertFront(DblNode*);//从表头插入一个结点voidClear();//去除该链表voidoperator+(DblList&);//实现两个任意整数的加法voidoperator*(DblList&);//实现两个任意整数的乘法DblList&operator=(DblList&);//重载赋值运算符intpare(DblList&);//两个整数的绝对值比较voidDisplay();//任意长度整数的标准化输出};DblList::DblList(){head=newDblNode();//构造函数head->next=NULL;head->prior=NULL;tail=head;current=NULL;sign=0;}DblList::~DblList(){//析构函数while(head->next!=NULL){current=head->next;head->next=current->next;deletecurrent;}current=NULL;sign=0;deletehead;head=NULL;tail=NULL;}intDblList::GetCount(){//返回该数字的长度〔不包括符号位〕current=head->next;intcount=0;while(current){count++;current=current->next;}current=NULL;returncount;}voidDblList::Insert(DblNode*p){//从链表尾部插入一个结点tail->next=p;p->prior=tail;tail=p;}voidDblList::InsertFront(DblNode*q){//从链表头部插入一个结点if(head->next==NULL){head->next=q;q->prior=head;tail=q;}else{q->next=head->next;head->next->prior=q;head->next=q;q->prior=head;}}boolDblList::CreatList(strings){//输入的任意长度的表示数字的字符串boolj=IsInt(s);//以此生成双向链表if(!j)returnj;else{inti=0;sign=JudSign(s);if(s[0]=='+'||s[0]=='-')i++;while(s[i]!='\0'){intia=CtoI(s[i]);current=newDblNode();current->data=ia;current->next=NULL;current->prior=NULL;Insert(current);i++;current=NULL;}returntrue;}}voidDblList::Clear(){while(head->next){current=head->next;head->next=current->next;deletecurrent;}tail=head;sign=0;current=NULL;}intDblList::pare(DblList&s){//任意两个长度数字绝对值比较inta=GetCount();intb=s.GetCount();if(a>b)return1;elseif(anext;s.current=s.head->next;while(current!=NULL){intre=current->data-s.current->data;if(re>0)return1;elseif(re<0)return-1;else{current=current->next;s.current=s.current->next;}}current=NULL;s.current=NULL;return0;}}DblList&DblList::operator=(DblList&s){Clear();sign=s.sign;s.current=s.head->next;while(s.current!=NULL){current=newDblNode();current->data=s.current->data;Insert(current);s.current=s.current->next;}s.current=NULL;current=NULL;return*this;}voidDblList::operator+(DblList&s){//实现加法〔包括减法〕DblListtemp;intda;intf=0;intsi=pare(s);if(si==0&&(sign+s.sign==0))temp.sign=0;else{if(si==0)temp.sign=sign;elseif(si>0)temp.sign=sign;elsetemp.sign=s.sign;current=tail;s.current=s.tail;while(1){if(current==head&&s.current==s.head){if(f){da=f;temp.current=newDblNode();temp.current->data=f;temp.InsertFront(temp.current);}if(!f)break;f=0;}elseif(current!=head&&s.current==s.head){temp.current=newDblNode();temp.current->data=current->data+f;temp.InsertFront(temp.current);current=current->prior;f=0;}elseif(current==head&&s.current!=s.head){temp.current=newDblNode();temp.current->data=s.current->data+f;temp.InsertFront(temp.current);s.current=s.current->prior;f=0;}else{da=current->data*sign+s.current->data*s.sign+f;if(da*temp.sign>=10){da=da-10*temp.sign;f=temp.sign;}elseif(da*temp.sign<0){da=da+10*temp.sign;f=-temp.sign;}elsef=0;temp.current=newDblNode();temp.current->next=NULL;temp.current->data=abs(da);temp.InsertFront(temp.current);current=current->prior;s.current=s.current->prior;}}current=NULL;s.current=NULL;}temp.current=temp.head->next;if(temp.current!=NULL)while(temp.current->data==0){temp.head->next=temp.current->next;deletetemp.current;temp.current=temp.head->next;}temp.current=NULL;cout<<"num1+num2=";temp.Display();}voidDblList::operator*(DblList&s){//实现乘法intcf=0;intans;inti,j;intcount=0;DblListtemp;temp.sign=sign*s.sign;inta1=GetCount();inta2=s.GetCount();inta=a1+a2;for(i=0;idata=0;temp.current->next=NULL;temp.current->prior=NULL;temp.InsertFront(temp.current);}s.current=s.tail;while(s.current!=s.head){current=tail;temp.current=temp.tail;for(i=0;iprior;for(j=0;jdata*current->data+temp.current->data+cf;temp.current->data=ans%10;cf=ans/10;current=current->prior;temp.current=temp.current->prior;}if(cf!=0){temp.current->data=temp.current->data+cf;cf=0;}s.current=s.current->prior;temp.current=temp.tail;count++;}if(temp.head->next->data==0){temp.current=temp.head->next;temp.head->next=temp.current->next;deletetemp.current;temp.current=NULL;}cout<<"num1*num2=";temp.Display();}voidDblList::Display(){//任意长数字的标准化输出intcount=GetCount();if(sign==0){cout<<"0"<next;while(current!=NULL){if(count>0){cout<data;count--;if(count%3==0&&count!=0)cout<<",";current=current->next;}}current=NULL;cout<
本文档为【c++实现任意长整数的四则运算】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
dczly68
从事多年财务会计,税务工作的经验
格式:doc
大小:116KB
软件:Word
页数:14
分类:教育学
上传时间:2021-11-28
浏览量:2