高精度进制运算.ppt

高精度进制运算.ppt

ID:53287055

大小:497.02 KB

页数:42页

时间:2020-04-18

高精度进制运算.ppt_第1页
高精度进制运算.ppt_第2页
高精度进制运算.ppt_第3页
高精度进制运算.ppt_第4页
高精度进制运算.ppt_第5页
资源描述:

《高精度进制运算.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、高精度运算转换数据类型加法运算减法运算乘法运算除法运算改善高精度运算的效率数据类型的转换typenumtype=array[1..500]ofword;{整数数组类型}vara,b:numtype;{a和b为整数数组}la,lb:integer;{整数数组a的长度和b的长度}s:string;{输入数串}将数串s转化为整数数组a的方法如下:k←length(s);fori←1tokdoa[k-i+1]←ord(s[i])-ord(‘0’);在变量运算对象的数值范围为任何数据类型所无法容纳的情况下,采用整数数组(每一个元素对应一位十进制数,由其下标

2、顺序指明位序号)。1、采用数串形式输入,并将其转化为整数数组。2、该数组的运算规则如同算术运算。3、用一个整数变量记录数据的实际长度(即数组的元素个数)加法运算c←a+b(a、b、c为numtype类型)vara,b,c:array[1..201]of0..9;n:string;lena,lenb,lenc,i,x:integer;beginwrite('Inputaugend:');readln(n);lena:=length(n);{加数放入a数组}fori:=1tolenadoa[lena-i+1]:=ord(n[i])-ord('0');

3、write('Inputaddend:');readln(n);lenb:=length(n);{被加数放入b数组}fori:=1tolenbdob[lenb-i+1]:=ord(n[i])-ord('0');i:=1;while(i<=lena)or(i<=lenb)dobeginx:=a[i]+b[i]+xdiv10;{两数相加,然后加前次进位}c[i]:=xmod10;{保存第i位的值}i:=i+1end;ifx>=10{处理最高进位}thenbeginlenc:=i;c[i]:=1endelselenc:=i-1;fori:=lencdo

4、wnto1dowrite(c[i]);writeln{输出结果}end.求回文数若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个10进制数56,将56加65(即把56从右向左读),得到的121是一个回文数。又如,对于10进制数87:STEP1:87+78=165STEP2:165+561=726STEP3:726+627=1353STEP4:1353+3531=4884在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。写一个程序,给定一个N(2≤N≤10,N=16)进制数m,m

5、的位数上限为20。求最少经过几步可以得到回文数。如果在30步以内(包括30步)不可能得到回文数,则输出“impossible”样例:INPUTOUTPUTN=9m=87STEP=61.将数串s转化为整数数组m设数串s=s1‥sp,串长为p。其中si为第p-i+1位n进制数(1≤i≤p)。我们将s转化为整数数组m=m[p]‥m[1],其中m[i]对应第i位n进制数。typemtype=array[1..100]ofinteger;varm:mtype;按下述方法将s转化为整数数组m:p←length(s);{计算s的串长}fori←1topdo{从

6、最高位开始计算整数数组m}begink←p-i+1;{计算si对应于的m数组下标}cases[i]of{转换si}’a’..’f’:m[k]←10+ord(s[i])-ord(’a’);’0’..’9’:m[k]←ord(s[i])-ord(’0’);else输出错误信息并退出程序;end;{case}end;{for}2.判别整数数组m是否为回文数functioncheck(m:mtype):boolean;{若整数数组m为回文数,则返回true,否则返回false}vari:integer;begincheck←false;fori←1tod

7、oifm[i]≠m[p-i+1]thenexit;{返回m非回文数标志}check←true;{返回m为回文数标志}end;{check}3.n进制加法运算整数数组m1与其反序数m2进行n进制加法运算,得到结果m1proceduresolve(varm1:mtype);varm2:mtype;beginfori←1topdom2[i]←m1[p-i+1];{计算反序数m2}fori←1topdo{由右而左逐位相加}beginm1[i]←m1[i]+m2[i];m1[i+1]←;{进位}m1[i]←m1[i]modn;{确定当前位}end;{for

8、}ifm1[p+1]≠0thenp←p+1;{最高位进位}ifcheck(m1)then输出步数并退出程序;end;{solve}4.主

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

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

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