分數的四則運算(c++過載練習)
阿新 • • 發佈:2019-02-17
/* * 分數的四則運算 * 過載運算子的實現 * 最簡分數列印結果 **/ #include<iostream> using namespace std; class fenShu //分數類 { public: int fenZi; //分子 int fenMu; //分母 fenShu input(int fz ,int fm); //輸入函式 void output(); //輸出函式 fenShu operator +(fenShu &); //過載四則運算 fenShu operator -(fenShu &); fenShu operator *(fenShu &); fenShu operator /(fenShu &); }; fenShu fenShu::operator+(fenShu &a) //加號過載 { fenShu g; g.fenMu=fenMu*a.fenMu; g.fenZi=fenZi*a.fenMu+a.fenZi*fenMu; return g; } fenShu fenShu::operator-(fenShu &a) //減號過載 { fenShu g; g.fenMu=fenMu*a.fenMu; g.fenZi=fenZi*a.fenMu-a.fenZi*fenMu; return g; } fenShu fenShu::operator*(fenShu &a) //乘號過載 { fenShu g; g.fenMu=fenMu*a.fenMu; g.fenZi=fenZi*a.fenZi; return g; } fenShu fenShu::operator/(fenShu &a) //除號過載 { fenShu g; g.fenMu=fenMu*a.fenZi; g.fenZi=fenZi*a.fenMu; return g; } fenShu fenShu::input(int fz ,int fm) //輸入實現 { fenShu a; a.fenZi=fz;a.fenMu=fm; return a; } void fenShu::output() //最簡分數輸出 { for(int i=2;i<=fenZi||i<=fenMu;i++) { if(fenZi%i==0&&fenMu%i==0) //找出分子分母最大公約數i { fenZi=fenZi/i; //簡化分子 fenMu=fenMu/i; //簡化分母 } } cout<<fenZi <<"/"<<fenMu<<endl; //列印簡化後的分數 } void main() { fenShu s1,s2,s3; int fenzi1,fenmu1,fenzi2,fenmu2; cout<<"請輸入第一個分數的分子(空格)分母"<<endl; cin>>fenzi1; cin>>fenmu1; cout<<"請輸入第二個分數的分子(空格)分母"<<endl; cin>>fenzi2; cin>>fenmu2; s1=s1.input(fenzi1,fenmu1); s2=s2.input(fenzi2,fenmu2); //列印分數加+法格式以及運算後的結果 s3=s1+s2; cout<<fenzi1<<"/"<<fenmu1 <<" + "<<fenzi2<<"/"<<fenmu2<<" = " ; s3.output(); //列印分數減-法格式以及運算後的結果 s3=s1-s2; cout<<fenzi1<<"/"<<fenmu1 <<" - "<<fenzi2<<"/"<<fenmu2<<" = " ; s3.output(); //列印分數乘*法格式以及運算後的結果 s3=s1*s2; cout<<fenzi1<<"/"<<fenmu1 <<" * "<<fenzi2<<"/"<<fenmu2<<" = " ; s3.output(); //列印分數除/法格式以及運算後的結果 s3=s1/s2; cout<<fenzi1<<"/"<<fenmu1 <<" / "<<fenzi2<<"/"<<fenmu2<<" = " ; s3.output(); }