首页 > 试题广场 >

定义一个实数计算类Real,实现单精度浮点数+、-、*、基

[问答题]

定义一个实数计算类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();
}

发表于 2018-05-07 15:13:42 回复(0)