欢迎来到天天文库
浏览记录
ID:39556127
大小:46.54 KB
页数:5页
时间:2019-07-06
《大整数运算·字串对象版》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、大整数运算·字串对象版一·实验名称:大整数运算·字串对象版二·实验目的:有一些整数,其位数可能上百位。在功能上对这些整数做加、减、乘、整除以及取余运算。在程序组织上要求通过大整数类型的设计,来体现更好的可读性和可维护性,并且对错误采用异常方法处理。输入数据有若干组,每组数据由一个运算符(+、-、*、/、%)和两个整数构成,整数的范围在-10^150~10^150之间,如果遇到运算符‘@’,则表示运算结束。对于每组数据,输出其运算序号和运算结果,以‘/’为例,每个结果单独成行。1)如果结果超过200位,则输出“TooLargeNumber.”;2)如果结果为空,或者前导为0,
2、则输出“IllegalNumber.”;3)如果运算符不为上面5种,则输出“IllegalOperator.”,跳过后续的2个操作数;4)如果除0,则输出“DivideByZero.”。三·实验内容与步骤:本实验主要包括四个模块——StrInt.hMyExcept.hStrIntApp.cppStrInt.cpp(一)界面设计根据实验要求,设计类strint,该类型以string串作为存储数据的主体,再加上符号属性。同时满足能进行大整数的四则运算,应该将5种运算设计为该类的普通友元函数。根据功能要求,大整数类型一共要进行加、减、乘、除、取余五种操作,而大整数无法用内部数据类
3、型来描述,所以采用string类型,然后构造函数将其计算结果转化成大整数类型。由于考虑到类型功能的扩从,最终应能自然地允许字串表示的大整数参与大整数对象的四则运算,所以这五种运算都要设计成为该类型友元的普通函数。classStrInt{string_sign;string_num;public:friendStrIntadd(constStrInt&a,constStrInt&b);friendStrIntsub(constStrInt&a,StrInt&b);friendStrIntmul(constStrInt&a,constStrInt&b);friendStrInt
4、div(constStrInt&a,constStrInt&b);friendStrIntmod(constStrInt&a,constStrInt&b);};当默认创建一个对象时,为了使对象有意义,赋以0值。StrInt(conststring&a="0");又要完成流设备对其对象进行输入输出操作。friendistream&operator>>(istream&in,StrInt&a);friendostream&operator<<(ostream&out,constStrInt&a);位数的上限值常量BYTENUM只用于大整数类型,所以应在类型中说明。但是为了避免在
5、实现代码中专门定义和初始化,可以使用枚举的技巧。enum{BYTENUM=200};(一)异常类设计在strint实现中须判断出错,错误来自乘法超大溢出,除0以及输入非法数字表示。我们设计一个异常类。classMyExcept{public:virtualstringgetwhat()=0;};classMyDivideZero:publicMyExcept{public:stringgetwhat(){return"........";}};classMyTooLarge:publicMyExcept{public:stringgetwhat(){return".....
6、.....";}};classMyIllegal:publicMyExcept{public:stringgetwhat(){return"..........";}};classMyIlleagalop:publicMyExcept{public:stringgetwhat(){return"..........";}};(三)应用框架设计在应用框架设计中涉及大整数类型和异常类型的使用。所以要包括:#include"StrInt.h"#include"MyExcept.h"根据输入的运算符号选择运算类型:StrInta,b;for(charch;cin>>ch&&ch!=
7、'@';){cin>>a>>b;switch(ch){case'-':cout<
此文档下载收益归作者所有