|  | 
 
| 
#include <iostream>
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  #include <string>
 #include <math.h>
 
 class Complex
 {
 public:
 Complex();  //构造器
 Complex(int a,int b);  //函数重载
 virtual ~Complex();
 
 Complex operator + (Complex &d);  // +重载
 Complex operator - (Complex &d);  // -重载
 Complex operator * (Complex &d);  // *重载
 Complex operator / (Complex &d);  // /重载
 
 Complex Simplify(Complex &temp);  //分数化简
 void Print();
 
 private:
 int num;  //分子
 int den;  //分母
 
 };
 
 Complex::Complex()
 {
 num = 0;
 den = 0;
 
 std::cout << "Complex 构造器++\n";
 }
 
 Complex::Complex(int r,int i)
 {
 num = r;
 den = i;
 }
 
 Complex::~Complex()
 {
 std::cout << "Complex 析构器--\n";
 }
 
 //打印
 void Complex::Print()
 {
 if(num == 0 || den == 0)
 std::cout <<"0\n";
 else if(num == den)
 std::cout <<"1\n";
 else
 std::cout << num << "/" << den << "\n";
 }
 
 //加法
 Complex Complex::operator + (Complex &d)
 {
 Complex c;
 
 if(d.den < 0)
 {
 d.num = -d.num;
 d.den = -d.den;
 }
 
 c.num = num * d.den + d.num * den;
 c.den = den * d.den;
 
 return c;
 }
 
 //减法
 Complex Complex::operator - (Complex &d)
 {
 Complex c;
 
 if(d.den < 0)
 {
 d.num = -d.num;
 d.den = -d.den;
 }
 
 c.num = num * d.den - d.num * den;
 c.den = den * d.den;
 
 return c;
 }
 
 //乘法
 Complex Complex::operator * (Complex &d)
 {
 Complex c;
 
 c.num = num * d.num;
 c.den = den * d.den;
 
 return c;
 }
 
 //除法
 Complex Complex::operator / (Complex &d)
 {
 Complex c;
 
 c.num = num * d.den;
 c.den = den * d.num;
 
 return c;
 }
 
 //分数化简
 Complex Complex::Simplify(Complex &temp)
 {
 Complex result;
 
 if(temp.den == 0 || temp.num == 0)        //分子分母为0的情况
 {
 result.num = 0;
 result.den = 0;
 
 return result;
 }
 
 int c = abs(temp.num);  //取绝对值
 int d = abs(temp.den);
 int x = c < d ? c : d;  //c,d的最大的公约数永远不可能是较大的那个数,只可能是较小的数
 for(x; x >= 1; x--)
 {
 if(c % x == 0 && d % x == 0)   //x正好被c,d整除,则找到了x
 {
 break;
 }
 }
 
 result.num = temp.num / x;
 result.den = temp.den / x;
 
 if(result.den < 0)  //分母带负号处理
 {
 result.num = -result.num;
 result.den = -result.den;
 }
 
 return  result;
 }
 
 int main()
 {
 Complex a(1,2), b(0,4), c, d, e, f;
 
 //计算
 c = a + b;
 d = a - b;
 e = a * b;
 f = a / b;
 
 //化简
 c = c.Simplify(c);
 d = d.Simplify(d);
 e = e.Simplify(e);
 f = f.Simplify(f);
 
 //打印
 std::cout << "a:";
 a.Print();
 std::cout << "b:";
 b.Print();
 std::cout << "c:";
 c.Print();
 std::cout << "d:";
 d.Print();
 std::cout << "e:";
 e.Print();
 std::cout << "f:";
 f.Print();
 
 return 0;
 }
 | 
 |