大整数的乘法实习报告.doc

大整数的乘法实习报告.doc

ID:53979692

大小:76.50 KB

页数:10页

时间:2020-04-12

大整数的乘法实习报告.doc_第1页
大整数的乘法实习报告.doc_第2页
大整数的乘法实习报告.doc_第3页
大整数的乘法实习报告.doc_第4页
大整数的乘法实习报告.doc_第5页
资源描述:

《大整数的乘法实习报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、湖南涉外经济学院计算机科学与技术专业《算法设计与分析》课程大整数乘法问题实验报告班级:学号:姓名:教师:成绩:2012年5月9【实验目的】1掌握设计有效算法的分治策略2利用软件的方法来实现大整数的算术运算【系统环境】Windows7平台【实验工具】VC++6.0英文企业版【问题描述】描述:由于现在的许多方面需要在计算结果中要求精确地得到所有位数上的数字,就必须用软件的方法来实现大整数的运算。其中一般都通过数组来实现。例:5464*1231其结果是:【实验原理】1、开始时的思路:1>.弄2个string类型的变量来获取乘数a与被乘数b2>.需要用到stri

2、ng类型的变量时再调用转换函数3>.再定义个2维数组来装a*b的积、定义个d数组装最终结果4>.写一个乘法和加法函数用来实现上述功能2、例子:9【源程序代码】#include#includeusingnamespacestd;voidMUL_max(stringa,intla,stringb,intlb,int**c);//相乘函数voidADD_max(int*d,int**c,intla,intlb);//相加函数char*ZhuanH(string);voidmain(){stringa;stringb;int*

3、*c=NULL;int*d=NULL;intla=0,lb=0;inti=0,j=0,k=0;cout<<"************大整数乘法**************"<>a;cout<<"请输入被乘数:";cin>>b;9la=a.length();lb=b.length();//分配2维C数组,存储数组a和b的乘积c=newint*[la];for(k=0;k

4、a+lb+1;i++)//初始化,便于后面判断相加后的有效位数d[i]=0;//初始化数组C,便于后面判断相加后的有效位数for(i=0;i

5、//释放空间for(intn=0;n=0;i--)for(j=lb-1;j

6、>=0;j--){num_a=a[i]-48;num_b=b[j]-48;if((k=num_a*num_b)>=10)//判断乘积是否有进位{if(mid!=0)//判断前一次相乘是否有进位c[i][j+1]=k%10+mid;elsec[i][j+1]=k%10;mid=k/10;}else//没有进位{if(mid!=0)//判断前一次相乘是否有进位c[i][j+1]=k+mid;else9c[i][j+1]=k;mid=0;}}if(mid!=0)c[i][0]=k/10;//如果乘数个位和被乘数相乘,最后有进位}//数组相加函数voidADD_

7、max(int*d,int**c,intla,intlb){inti=0,j=0;intmid=0;intnum_a=0,num_b=0;intadd=0,midnum=0;//将相乘得到的二维数组C各行错位相加,得到一位数组dfor(i=la-1;i>=0;i--)for(j=lb;j>=0;j--){num_a=d[i+j+1];num_b=c[i][j];add=num_a+num_b;9if(add>=10)//判断相加是否有进位{if(midnum==1)d[i+j+1]=add%10+1;elsed[i+j+1]=add%10;midnum=

8、1;}else{d[i+j+1]=add;midnum=0;}}if(midnu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。