项目3-分数类中的运算符重载
生活随笔
收集整理的這篇文章主要介紹了
项目3-分数类中的运算符重载
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/*
* Copyright (c) 2011, 煙臺大學(xué)計(jì)算機(jī)學(xué)院
* All rights reserved.
* 作 者:王靜
* 完成日期:2013 年 5 月 5 日
* 版 本 號:v1.0
* 輸入描述:
* 問題描述:實(shí)現(xiàn)分?jǐn)?shù)類中的運(yùn)算符重載,
在分?jǐn)?shù)類中可以完成分?jǐn)?shù)的加減乘除(運(yùn)算后再化簡)、求反、
比較(6種關(guān)系)的運(yùn)算。可以從第5周項(xiàng)目2的代碼開始工作。
* 程序輸出:
* 問題分析:
* 算法設(shè)計(jì):略
*/
#include<iostream>
#include<cmath>
using namespace std;
class CFraction
{private:
int nume; // 分子
int deno; // 分母
public:CFraction(int nu=0,int de=1); //置值,改變值時用CFraction simplify(); //化簡(使分子分母沒有公因子)//比較運(yùn)算符(二目)的重載bool operator > (CFraction &t);bool operator < (CFraction &t);bool operator == (CFraction &t);//二目運(yùn)算符的重載CFraction operator+(CFraction &n);CFraction operator-(CFraction &n);CFraction operator*(CFraction &n);CFraction operator/(CFraction &n);friend istream &operator >> (istream &cin,CFraction &e);friend ostream &operator << (ostream &cout,CFraction &e);
};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;}
}
//二目運(yùn)算符的重載
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();
}
istream &operator >> (istream &cin,CFraction &e)
{cout<<"請輸入分?jǐn)?shù)的分子與分母"<<endl;cin>>e.nume>>e.deno;e.simplify();return cin;
}
ostream &operator << (ostream &cout,CFraction &e)
{if(e.deno==1){cout<<e.nume<<endl;}else{cout<<e.nume<<"/"<<e.deno<<endl;}return cout;
}
int main()
{CFraction n1,n2,n;//構(gòu)造函數(shù),初始化用cin>>n1>>n2;cout<<"n1為:"<<n1;cout<<"n2為:"<<n2;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;//下面自行設(shè)計(jì)對其他運(yùn)算符的重載的測試n=n1+n2;cout<<"n1+n2="<<n;n=n1-n2;cout<<"n1-n2="<<n;n=n1*n2;cout<<"n1*n2="<<n;n=n1/n2;cout<<"n1/n2="<<n;return 0;
}
?
構(gòu)造函數(shù)及運(yùn)算符重載的函數(shù)聲明
運(yùn)行結(jié)果:
(貼圖)
心得體會:
總結(jié)
以上是生活随笔為你收集整理的项目3-分数类中的运算符重载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android读取assets下的.js
- 下一篇: http协议文字加图解