資源簡介
1.自定義分數類fraction,使用該類可以完成分數的輸入、分數的加、減、乘、除二目運算和一目減運算、分數的約分操作、分數的倒數運算、對兩個分數進行六種比較運算、以及對分數的輸出等操作。
2.將其中使用的普通函數盡量改寫成運算符重載函數。如,可重載+、-、*、/、>、>=、<、<=、==、!=,以實現分數的各種運算。并且實現分數與整數的混合運算。
3.盡可能考慮程序的性能。
評分標準
1. 對兩個類的成員合理地使用訪問權限:1分
2. 實現分數與整數的混合運算:1分
3. 程序結構合理,布局清晰,正確地安排.h和.cpp:2分
4. 考慮程序的性能:1分
這個作業可以用到以下C++知識:
定義類,運算符重載、類型轉換。

代碼片段和文件信息
/*
*?Copyright?(c)?2012?Zhejiang?University
*?All?rights?reserved.?
*?file?name?:fraction.cpp
*?version :1.0
*?author :Song?Yang
*?date :2012-12-12
*/
#?include?
#?include?
#?include?
#?include?“fraction.h“
fraction::fraction(int?numer){
this->numerator?=?numer;
this->denominator?=?1;
}
fraction::fraction(int?numerint?denomin){
this->numerator?=?numer;
this->denominator?=?denomin;
}
fraction::fraction(const?fraction&?other){
numerator?=?other.numerator;
denominator?=?other.denominator;
}
fraction&?fraction::operator=(const?fraction?&other){
numerator?=?other.numerator;
denominator?=?other.denominator;
return?*this;
}
std::string?fraction::toString(){
std::string?fractionStr;
std::ostringstream?os;
os<numerator;
if(this->denominator?!=?1){
os<<“/“;
os<denominator;
}
return?os.str();
}
void?fraction::input(){
std::cout<<“input?a?fraction?(e.g.?-2/24):“< std::string?tmpStr;
std::cin>>tmpStr;
size_t?found?=?tmpStr.find(‘/‘);
std::string?tmpNumStrtmpDenomStr;
if(found?!=std::string::npos){
tmpNumStr?=?tmpStr.substr(0found);
tmpDenomStr?=?tmpStr.substr(found+1);
this->numerator?=?atoi(tmpNumStr.c_str());
this->denominator?=?atoi(tmpDenomStr.c_str());
}
else{
this->numerator?=?atoi(tmpStr.c_str());
this->denominator?=?1;
}
std::cout<<“input?fraction?success:“<toString()< std::cout<<“-----------------------------------------“< }
void?fraction::reduce(){
int?gcdNum?=?this->gcd(numeratordenominator);
int?tmpNum?=?numerator?/?gcdNum;
int?tmpDen?=?denominator?/?gcdNum;
numerator?=?tmpNum;
denominator?=?tmpDen;
}
fraction?fraction::opposite(void){
fraction?reciprocalFrac(-numerator?denominator);
reciprocalFrac.reduce();
return?reciprocalFrac;
}
fraction?fraction::reciprocal(void){
fraction?reciprocalFrac(denominator?numerator);
if?(numerator?0)
{
reciprocalFrac.denominator?*=?-1;
reciprocalFrac.numerator?*=?-1;
}
reciprocalFrac.reduce();
return?reciprocalFrac;
}
fraction?fraction::add(const?fraction?&other){
int?tmpNum?=?numerator*other.denominator?+?denominator*other.numerator;
int?tmpDen?=?denominator*other.denominator;
fraction?sumResult(tmpNumtmpDen);
sumResult.reduce();
return?sumResult;
}
fraction?fraction::minus(const?fraction?&other){
int?tmpNum?=?numerator*other.denominator?-?denominator*other.numerator;
int?tmpDen?=?denominator*other.denominator;
fraction?diffResult(tmpNumtmpDen);
diffResult.reduce();
return?diffResult;
}
fraction?fraction::multiple(const?fraction?&other){
int?tmpNum?=?numerator*other.numerator;
int?tmpDen?=?denominator*other.denominator;
fraction?multipleResult(tmpNumtmpDen);
multipleResult.reduce();
return?multipleResult;
}
fraction?fraction::divide(const?fraction?&other){
int?tmpNum?=?numerator*other.denominator;
int?tmpDen?=?denominator*other.numerator;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????81920??2012-12-13?05:28??Fraction\debug\Fraction.exe
?????文件?????439716??2012-12-13?05:28??Fraction\debug\Fraction.ilk
?????文件?????543744??2012-12-13?05:28??Fraction\debug\Fraction.pdb
?????文件???????8906??2012-12-13?05:28??Fraction\Fraction\Debug\BuildLog.htm
?????文件????????403??2012-12-13?05:28??Fraction\Fraction\Debug\Fraction.exe.em
?????文件????????468??2012-12-13?05:28??Fraction\Fraction\Debug\Fraction.exe.em
?????文件????????385??2012-12-13?05:28??Fraction\Fraction\Debug\Fraction.exe.intermediate.manifest
?????文件?????113735??2012-12-13?05:27??Fraction\Fraction\Debug\fraction.obj
?????文件?????????65??2012-12-13?05:28??Fraction\Fraction\Debug\mt.dep
?????文件??????94222??2012-12-13?05:28??Fraction\Fraction\Debug\testFraction.obj
?????文件?????224256??2012-12-13?05:28??Fraction\Fraction\Debug\vc80.idb
?????文件?????208896??2012-12-13?05:28??Fraction\Fraction\Debug\vc80.pdb
?????文件???????7021??2012-12-13?04:51??Fraction\Fraction\fraction.cpp
?????文件???????2191??2012-12-13?04:49??Fraction\Fraction\fraction.h
?????文件???????4166??2012-12-13?03:44??Fraction\Fraction\Fraction.vcproj
?????文件???????1423??2012-12-13?05:28??Fraction\Fraction\Fraction.vcproj.laiconglin-PC.laiconglin.user
?????文件????????687??2012-12-13?05:16??Fraction\Fraction\funcUtil.h
?????文件???????4096??2012-12-13?05:28??Fraction\Fraction\testFraction.cpp
?????文件????1403904??2012-12-13?05:28??Fraction\Fraction.ncb
?????文件????????889??2012-12-12?02:04??Fraction\Fraction.sln
????..A..H.?????13312??2012-12-13?05:28??Fraction\Fraction.suo
?????目錄??????????0??2012-12-13?05:28??Fraction\Fraction\Debug
?????目錄??????????0??2012-12-13?05:28??Fraction\debug
?????目錄??????????0??2012-12-13?05:28??Fraction\Fraction
?????目錄??????????0??2012-12-12?03:42??Fraction
-----------?---------??----------?-----??----
??????????????3154405????????????????????25
評論
共有 條評論