pascal 第15讲 高精度运算.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pascal 第15讲 高精度运算

总结 数值处理 数值处理是计算机的主要功能之一。 中学信息技术课本提到:计算机具有的特点 运算速度快 计算精度高 存储能力强 利用这一特点,可以进行大数据或高精确度数的处理。 Pascal语言中的数值型数据类型 总结 整型和实型,都是有限的范围; 程序所处理的各类型数据必有相应的值域限定。 如果待处理的数据很大,就如引例中一样,位数达到几十甚至上千位,大大超出了所定义标准类型规定的范围,此时结果就会出错。这是由现有计算机的软硬件条件限制所决定的。 那么如何解决这个问题呐? 可在程序设计中使用高精度运算。 高精度运算? 所谓的高精度运算,是指在某些试题中,参与处理的数据大小超出了标准数据类型所能表示的范围的运算。 高精度运算是信息学奥赛中用到的最基础的知识之一,单独考察的情形很少出现,但作为基础知识,在考察其他主要算法时会经常用到,且常出现在难度较高的题目中,并因其处理时的高复杂度,使许多选手望而却步。 高精度运算对选手的编程技巧和程序调试能力提出了很高的要求。并要求选手非常细心的去对待他。 常见的高精度运算: 加法运算 减法运算 乘法运算 除法运算 高精度运算涉及到的主要操作: 数据的输入和存储 数据的运算 加、减、乘、除运算 加法和乘法的进位 减法的借位和符号确定 除法商和余数的处理 数据的输出 加法运算 已知两个正整数a和b(10200),求a、b的和。 【分析】 1、数据的输入和存储 2、计算结果的位数 3、加法计算与进位 4、结果的输出 1、数据的输入和存储 数据超出标准类型(整型、实型)所能表示的范围,不能直接定义。我们考虑利用现有的某些标准类型来间接实现数据的输入和存储。分析发现:在Pascal中,能表示多个数的数据类型有两种:数组和字符串。 数组:每个数组元素可以存储数的1位(注意此处可优化),操作数有多少位就需要开辟多少个数组元素的数组。 优点:每一位都是数的形式,可以直接加减;运算时非常方便。 缺点:数组不能直接输入;输入时每两位数之间必须有分隔符,不符合 数值的输入习惯; 字符串:String型字符串的最大长度是255,可以表示255位。Ansistring型字符串长度不受限制。 优点:能直接输入输出,输入时,每两位数之间不必分隔符,符合数值的输入习惯; 缺点:字符串中的每一位是一个字符,不能直接进行运算,必须先将它转化为数值再进行运算;运算时非常不方便; 总结 字符串可以将“数”作为“串”直接输入,但不能对“数串”直接进行加减等运算; 数组不能将“数”直接输入,却可以实现每个数组元素存储“数”的1位,这样数组每一位都是数的形式,可以直接进行运算。 对上面两种数据结构取长补短: 我们采用数串(字符串)形式输入数据,并将其转化为数组来存储,就解决了高精度的数据输入和存储问题。 在这里,用数组a存数串sa,数组b存数串sb。为了便于以后的计算和进位处理,在数组a中,我们用a[1]存储数的个位,数组b也一样。 如输入的数为3452345: 示例:已知两个正整数a和b(10200),求a、b的和。 如上面的题目,其输入和存储可以这样来实现: const max=200; var a,b,:array [1..max] of integer; //a,b用于存储 sa,sb:string; // “数串”sa和sb,用于输入 la,lb,i:integer;//la为数串sa的长度和lb为sb的长度 程序中: readln(sa); readln(sb); //输入数串sa和sb la:=length(sa); //求数串sa的长度 for i:= la downto 1 do a[la-i+1]:=ord(sa[i])-ord(0); //将数串sa分离并存储到a中 lb:=length(sb); //求数串sb的长度 for i:= lb downto 1 do b[lb-i+1]:=ord(sb[i])-ord(0);//将数串sb分离并存储到b中 2、计算结果的位数 在高精度运算中,要先确定计算结果的位数,以确定存放计算结果的数组的大小。 加法运算中,结果的位数最大等于两数中较大数的位数+1, 如:987+65,结果1052 123+45,结果168 加数和被加数的最大位数为3

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档