数系统编程说明书

上传人:创****公 文档编号:179102159 上传时间:2021-04-07 格式:DOC 页数:27 大小:146.50KB
返回 下载 相关 举报
数系统编程说明书_第1页
第1页 / 共27页
数系统编程说明书_第2页
第2页 / 共27页
数系统编程说明书_第3页
第3页 / 共27页
数系统编程说明书_第4页
第4页 / 共27页
数系统编程说明书_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《数系统编程说明书》由会员分享,可在线阅读,更多相关《数系统编程说明书(27页珍藏版)》请在金锄头文库上搜索。

1、数系统编程说明书 版权所有“数学机械化与自动推理平台”软件组2003年5月目 录1、数系统简述2、各种数类所共有的操作2.1、数的构造2.2、数的基本操作2.3、数的基本算术运算2.4、数的比较2.5、数的输入输出2.6、其它数学运算3、针对每一种具体数类的特定操作3.1、有关大整数的操作3.2、有关分数的操作3.3、有关浮点数的操作3.4、有关双精度浮点数的操作3.5、有关复数的操作4、常用的类型定义,常数定义和宏函数5、编程时的一些注意事项5.1、关于数的混合运算5.2、关于浮点数(TFloatNum)的精度设置*1、 数系统简述数系统中包含以下五种子数类和一种基数类:TBigInt(多精

2、度整数类):有关文件:num_integer.h,num_integer.cpp,num_bigint.cpp。数据结构:TBigInt:B * num; 指向大整数基本内部表示的指针。TFraction(分数类): 有关文件:num_fraction.h,num_fraction.cpp。数据结构:TBigInt * nu; TBigInt型指针,表示分数的分子。TBigInt * de; TBigInt型指针,表示分数的分母。TFloatNum(浮点数类):有关文件:num_float.h,num_float.cpp。数据结构:TBigInt * mant; TBigInt型指针,表示浮点

3、数的有效数字部分。short exp; 整型变量,表示浮点数的指数部分。注:该浮点数的值可以表示为:mant10exp。TDouble(双精度浮点数类):有关文件:num_double.h,num_double.cpp。数据结构:double dnum; double型变量,即TDouble类实际上就是对C/C+语言中的double类型的封装。TComplex(复数类):有关文件:num_complex.h,num_complex.cpp。数据结构:TNumber * real; TNumber 型指针,表示复数的实部,它不能再是TComplex类型。TNumber * imag; TNumb

4、er 型指针,表示复数的虚部,它不能再是TComplex类型。TNumber(基数类):上述五种子数类的基类,通过提取各种子数类的公共特性得到,在该类中实现各种子数类所共有的操作。有关文件:num_number.h,num_number.cpp。数据结构:TNumber * ptr; TNumber 型指针,指向该数本身。2、 各种数类所共有的操作这部分所列的操作基本上是在每一种子数类中都提供的操作,在基数类TNumber中一部分操作通过类型判断和类型转化之后调用相应子数类中的运算来实现,而另一部分操作则利用虚函数的机制实现,在每个子数类中提供该虚函数的覆盖版本。为避免重复,以下操作只列出其在

5、TNumber类中的原型。2.1、数的构造TNumber();基数的缺省构造函数TNumber(char * str);把字符串str构造成相应的数类:若str中包含字符I,则构造为复数TComplex;若str中包含字符D,则构造为双精度浮点数TDouble;若str中包含字符.,则构造为浮点数TFloatNum;若str中包含字符/,则构造为分数TFraction;若不是以上四种情况,则构造为整数TBigInt。TNumber(const TNumber & n);基数的复制构造函数:通过先进行类型判断,再调用相应的子数类的复制构造函数实现。不构造新的内存,只修改引用计数。类型转化构造函数

6、:TNumber(int);TNumber(short);TNumber(unsigned long);TNumber(double);TNumber(TBigInt &);TNumber(TFloatNum &);TNumber(TFraction &);TNumber(TDouble &);TNumber(TComplex &);2.2、数的基本操作数的复制:virtual TAtom * Copy();数的复制不构造新的内存,只修改引用计数。赋值运算符:TNumber& operator = (const TNumber& n);数的赋值操作不构造新的内存,只修改引用计数。调用方法:TN

7、umber n,n1;n=n1;相反数运算符:TNumber operator (); 返回该数的相反数符号和绝对值函数:friend int sign(const TNumber n);数的符号:n = 0时返回 0 ; n 0时返回 1 ; n Ceil()=4n2:=3.5;n2-Ceil()=3n3:= 13241234/3241;n3-Ceil()=4086virtual TBigInt Floor();返回不大于该数的最大的整数,当该数为大整数类型时返回其本身。注:该数的类型不能是TComplex(复数)示例:n1:=3.5;n1-Floor()=3n2:=3.5;n2-Floor

8、()=4n3:= 13241234/3241;n3-Floor()=4085 2.3、数的基本算术运算四则运算符:virtual TNumber operator+(const TNumber& n) ;virtual TNumber operator-(const TNumber& n) ;virtual TNumber operator*(const TNumber& n) ;virtual TNumber operator/(const TNumber& n) ;virtual TNumber operator%(const TNumber& n) ;virtual TNumber op

9、erator += (const TNumber & n);virtual TNumber operator -= (const TNumber & n);virtual TNumber operator *= (const TNumber & n);virtual TNumber operator /= (const TNumber & n);virtual TNumber operator %= (const TNumber & n);TNumber operator + (int);TNumber operator + ();TNumber operator - ();TNumber o

10、perator - (int);2.4、数的比较比较运算符:friend bool operator = (const TNumber &, const TNumber & );friend bool operator != (const TNumber &, const TNumber & );friend bool operator (const TNumber &, const TNumber & );friend bool operator (const TNumber &, const TNumber & );friend bool operator = (const TNumber

11、 &, const TNumber & );比较函数:friend int comp(const TNumber & n1,const TNumber & n2);比较两个数的大小:fn1 = fn2时,返回0;fn1 fn2时,返回1 ;fn1 (istream & in, TNumber &num); friend outtype& operator (outtype& out,const TNumber &num); 显示函数:virtual void display(outtype& out =wout) const;2.6、其它数学运算平方根:friend TNumber sqrt(

12、const TNumber & n); 返回数n的平方根,返回值的具体类型与输入值n的类型保持一致。特别地,当n是大整数类型时,返回其平方根的整数部分。注:目前n不能是复数类型TComplex示例:sqrt(341234123.34123412)= 18472.5234697708293370474597320sqrt(19469237469234124)= 139532209sqrt(343.34D)= 18.5294sqrt(19461412341/1234123412)= 69752/17565乘幂:分别提供指数n为以下不同类型的重载运算符:TNumber operator (TNumber & n);TNumber operator (unsigned n);TNumber operator (unsigned short n); TNumber operator (int n); 3、

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板/表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号