/项目3-分数类中的运算符重载
生活随笔
收集整理的這篇文章主要介紹了
/项目3-分数类中的运算符重载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
* Copyright (c) 2011, 煙臺大學計算機學院
* All rights reserved.
* 作 者:王靜
* 完成日期:2013 年 4 月 24 日
* 版 本 號:v1.0
* 輸入描述:
* 問題描述:實現分數類中的運算符重載,
在分數類中可以完成分數的加減乘除(運算后再化簡)、求反、
比較(6種關系)的運算??梢詮牡?周項目2的代碼開始工作。
* 程序輸出:
* 問題分析:
* 算法設計:略
*/
#include<iostream>
#include<cmath>
using namespace std;
class CFraction
{private:
int nume; // 分子
int deno; // 分母
public:CFraction(int nu=0,int de=1); //置值,改變值時用CFraction simplify(); //化簡(使分子分母沒有公因子)//比較運算符(二目)的重載bool operator > (CFraction &t);bool operator < (CFraction &t);bool operator == (CFraction &t);//二目運算符的重載CFraction operator+(CFraction &n);CFraction operator-(CFraction &n);CFraction operator*(CFraction &n);CFraction operator/(CFraction &n);void display();
};CFraction::CFraction(int nu,int de) //置值
{nume=nu;deno=de;
}
CFraction CFraction::simplify()
{CFraction n;n.nume=nume;n.deno=deno;int i;if(nume%deno==0){n.deno=1;n.nume=nume/deno;}else{if(nume>deno){for(i=2;i<=n.deno;i++){if(nume%i==0&&deno%i==0){n.nume=n.nume/i;n.deno=n.deno/i;}}}else{for(i=2;i<=n.nume;i++){if(n.nume%i==0&&n.deno%i==0){n.nume=n.nume/i;n.deno=n.deno/i;}}}}return n;
}
bool CFraction::operator > (CFraction &t)
{if(nume>t.nume||(nume==t.nume&&deno>t.deno)){return true;}else{return false;}
}
bool CFraction::operator < (CFraction &t)
{if(nume<t.nume||(nume==t.nume&&deno<t.deno)){return true;}else{return false;}
}
bool CFraction::operator == (CFraction &t)
{if(nume==t.nume&&deno==t.deno){return true;}else{return false;}
}
//二目運算符的重載
CFraction CFraction::operator+(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=(n.nume)*deno+nume*(n.deno);return t.simplify();
}
CFraction CFraction::operator-(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=nume*n.deno-n.nume*deno;return t.simplify();
}
CFraction CFraction::operator*(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=nume*n.nume;return t.simplify();
}
CFraction CFraction::operator/(CFraction &n)
{CFraction t;t.deno=deno*n.nume;t.nume=nume*n.deno;return t.simplify();
}
void CFraction::display()
{if(deno==1){cout<<nume<<endl;}else{cout<<nume<<"/"<<deno<<endl;}
}
int main()
{CFraction n1(3,2),n2(1,2),n;//構造函數,初始化用cout<<"n1為:";n1.display();cout<<"n2為:";n2.display();cout<<"下面比較兩個時間大小:\n";if (n1>n2) cout<<"n1>n2"<<endl;if (n1<n2) cout<<"n1<n2"<<endl;if (n1==n2) cout<<"n1=n2"<<endl;cout<<endl;//下面自行設計對其他運算符的重載的測試n=n1+n2;n.display();n=n1-n2;n.display();n=n1*n2;n.display();n=n1/n2;n.display();return 0;
}
?
運行結果:
(貼圖)
心得體會:
總結
以上是生活随笔為你收集整理的/项目3-分数类中的运算符重载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何大幅提高 Django 网站加载速度
- 下一篇: 微圈社群助手到底是什么?怎么用?