定义一个实数计算类Real,实现单精度浮点数+、-、*、/基本算术运算。要求:可以进行数据范围(-3.4×1038~3.4×1038,或自行设定)检查,数据溢出时显示错误信息并中断程序运行。
#include <iostream> using namespace std; class Real { private: double a; public: Real (double r=0){a=r;} Real operator +(Real); Real operator -(Real); Real operator *(Real); Real operator /(Real); Real operator =(Real); void display() { cout<<a<<endl; } }; Real Real::operator+(Real x) { Real temp; if(a+x.a<-1.7e308||a+x.a>1.7e308) { cout<<"Data overflow!"<<endl; abort(); } temp.a=a+x.a; return temp; } Real Real::operator-(Real x) { Real temp; if(a-x.a<-1.7e308||a-x.a>1.7e308) { cout<<"Data overflow!"<<endl; abort(); } temp.a=a-x.a; return temp; } Real Real::operator*(Real x) { Real temp; if(a*x.a<-1.7e308||a*x.a>1.7e308) { cout<<"Data overflow!"<<endl; abort(); } temp.a=a*x.a; return temp; } Real Real::operator/(Real x) { Real temp; if(a/x.a<-1.7e308||a/x.a>1.7e308) { cout<<"Data overflow!"<<endl; abort(); } temp.a=a/x.a; return temp; } Real Real::operator=(Real x) { a=x.a; return *this; } int main() { Real A(1.1),B(1.2),C; cout<<"A=";A.display(); cout<<"B=";B.display(); C=A+B; cout<<"C=A+B="; C.display(); C=A-B; cout<<"C=A-B="; C.display(); C=A*B; cout<<"C=A*B="; C.display(); C=A/B; cout<<"C=A/B="; C.display(); }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题