Pascal代码高精度.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Pascal代码高精度

Pascal代码: program?p1039; type intarray? ?array[1..251]?of?byte; var s1,s2:string[250]; code,len:integer; a,b,res:intarray; *?转置并转换为整数数组?* procedure?revolve var?inta:intarray;?s:string[250] ; var i,tmp:byte; begin tmp: length s ; for?i: 1?to?tmp?do val copy s,tmp-i+1,1 ,inta[i],code ; end; *?处理多余数字?* procedure?remain lmin,lmax,x:byte;which:intarray ; var i:byte; begin for?i: lmin+1?to?lmax?do begin res[i]: which[i]+x ?mod?10; x: which[i]+x ?div?10; len: i end; if?x 0?then begin len: len+1; res[len]: x; end; end; *?加法,并处理多余数字?* procedure?addx ; var i,lena,lenb,x:byte; begin lena: length s1 ; lenb: length s2 ; if?lena lenb?then len: lenb else len: lena; x: 0; for?i: 1?to?len?do begin res[i]: a[i]+b[i]+x ?mod?10; x: a[i]+b[i]+x ?div?10 end; if?lena lenb?then remain lenb,lena,x,a ; if?lena lenb?then remain lena,lenb,x,b ; if? lena lenb ?and? x 0 ?then begin len: len+1; res[len]: x; end; end; *?反向输出?* procedure?print ; var i:byte; begin for?i: len?downto?1?do write res[i] ; writeln; end; *?main?* begin readln s1 ; readln s2 ; revolve a,s1 ; revolve b,s2 ; addx ; print ; end. 算法与实例: 1、求任意位数的加法运算 【问题分析】: 、数据的接收和存储 采用字符串输入的方式,设参与运算的两个数分别为A和B,利用字符串函数把字符串转化为数值,将A、B中的每一位数字分别存储在A、B两个数组中,最低位在第一个单元中。 PASCAL语言中可以直接采用字符读取的方式来接收数据,而后通过ORD x -48的方式转化成数值。 、确定和的位数 设LA为A的位数,LB为B的位数,则两数之和的位数最大为较大加数位数加1,即如果LA LB,则和的位数最大为LA+1。 、进位处理 进行加法处理时,先设置一个加法进位标志 T,并将 T 的初值设为 0。当两数相加时,从低位到高位,各位数字分别相加,如果相加后某个单元中的数大于 10,则将该单元中的数减去10,并将进位标志 T 设为 1,当对下一单元进行相加时,还要再加上前一个单元的进位标志 T。同时将 T 再次置为 0,不断重复,直到最高位为止。! 程序清单: program gjdjs; const n 100; type arrtype array[1..n] of integer; var a,b:arrtype; t,s,j,l:integer; procedure readdata var int:arrtype ; var ch:char; i,k:integer; begin writeln Input a number: ; read ch ;k: 0; while ch in[0..9] do begin inc k ; int[k]: ord ch -48; read ch ; end; for i: k downto 1 do begin int[n+i-k]: int[i]; int[i]: 0; end; end; begin readdata a ;readln; readdata b ;writeln; t: 0; for j: n downto 1 do begin s: a[j]+b[j]+t; a[j]: s mod 10; t: s div 10; e

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档