第1章高精度计算(c版).ppt

第1章高精度计算(c版).ppt

ID:48121007

大小:318.00 KB

页数:30页

时间:2019-05-06

第1章高精度计算(c版).ppt_第1页
第1章高精度计算(c版).ppt_第2页
第1章高精度计算(c版).ppt_第3页
第1章高精度计算(c版).ppt_第4页
第1章高精度计算(c版).ppt_第5页
资源描述:

《第1章高精度计算(c版).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第一章高精度计算利用计算机进行数值计算,有时会遇到这样的问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度。我们可以利用程序设计的方法去实现这样的高精度计算。介绍常用的几种高精度计算的方法。高精度计算中需要处理好以下几个问题:(1)数据的接收方法和存贮方法数据的接收和存贮:当输入的数很长时,可采用字符串方式输入,这样可输入数字很长的数,利用字符串函数和操作运算,将每一位数取出,存入数组中。另一种方法是直接用循环加数组方法输入数据。voidinit(inta[])//传入一个数

2、组{strings;cin>>s;//读入字符串sa[0]=s.length();//用a[0]计算字符串s的位数for(i=1;i<=a[0];i++)a[i]=s[a[0]-i]-'0';//将数串s转换为数组a,并倒序存储}另一种方法是直接用循环加数组方法输入数据。(2)高精度数位数的确定位数的确定:接收时往往是用字符串的,所以它的位数就等于字符串的长度。(3)进位,借位处理加法进位:c[i]=a[i]+b[i];if(c[i]>=10){c[i]%=10;++c[i+1];}减法借位:if(a[i]

3、i]-b[i];乘法进位:c[i+j-1]=a[i]*b[j]+x+c[i+j-1];x=c[i+j-1]/10;c[i+j-1]%=10;(4)商和余数的求法商和余数处理:视被除数和除数的位数情况进行处理.【例1】高精度加法。输入两个正整数,求它们的和。【分析】输入两个数到两个变量中,然后用赋值语句求它们的和,输出。但是,我们知道,在C++语言中任何数据类型都有一定的表示范围。而当两个被加数很大时,上述算法显然不能求出精确解,因此我们需要寻求另外一种方法。在读小学时,我们做加法都采用竖式方法,如图1。这样,我们方便写出两个整数相加的算法。856+2551111图1A3A

4、2A1+B3B2B1C4C3C2C1图2如果我们用数组A、B分别存储加数和被加数,用数组C存储结果。则上例有A[1]=6,A[2]=5,A[3]=8,B[1]=5,B[2]=5,B[3]=2,C[4]=1,C[3]=1,C[2]=1,C[1]=1,两数相加如图2所示。因此,算法描述如下:intc[100];voidadd(inta[],intb[])//a,b,c都为数组,分别存储被加数、加数、结果{inti=1,x=0;//x是进位while((i<=a数组长度)

5、

6、(i<=b数组的长度)){c[i]=a[i]+b[i]+x;//第i位相加并加上次的进位x=c[i]/1

7、0;//向高位进位c[i]%=10;//存储第i位的值i++;//位置下标变量}}通常,读入的两个整数用可用字符串来存储,程序设计如下:#include#include#includeusingnamespacestd;intmain(){chara1[100],b1[100];inta[100],b[100],c[100],lena,lenb,lenc,i,x;memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));gets(a1);gets

8、(b1);//输入加数与被加数lena=strlen(a1);lenb=strlen(b1);for(i=0;i<=lena-1;i++)a[lena-i]=a1[i]-48;//加数放入a数组for(i=0;i<=lenb-1;i++)b[lenb-i]=b1[i]-48;//加数放入b数组lenc=1;x=0;while(lenc<=lena

9、

10、lenc<=lenb){c[lenc]=a[lenc]+b[lenc]+x;//两数相加x=c[lenc]/10;c[lenc]%=10;lenc++;}c[lenc]=x;if(c[lenc]==0)lenc--;//处理最

11、高进位for(i=lenc;i>=1;i--)cout<#include#includeusingnamespacestd;intmain(){inta[256],b[256],c[256],lena,lenb,le

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

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

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