项目4-分数类和整型数的四则运算
生活随笔
收集整理的這篇文章主要介紹了
项目4-分数类和整型数的四则运算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
* Copyright (c) 2011, 煙臺大學計算機學院
* All rights reserved.
* 作 者:王靜
* 完成日期:2013 年 4 月 24 日
* 版 本 號:v1.0
* 輸入描述:
* 問題描述:分數類中的對象可以和整型數進行四則運算,且運算符合交換律。例如:CFraction a(1,3),b;int i=2; 可以完成b=a+i;。同樣,可以完成i+a, 45+a, a*27, 5/a等各種運算。
* 程序輸出:
* 問題分析:
* 算法設計:略
*/
#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);CFraction operator+(int i);CFraction operator-(int i);CFraction operator*(int i);CFraction operator/(int i);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();
}
CFraction CFraction::operator+(int i)
{CFraction t;t.deno=deno;t.nume=nume+i*deno;return t.simplify();
}CFraction CFraction::operator-(int i)
{CFraction t;t.deno=deno;t.nume=nume-i*deno;return t.simplify();
}
CFraction CFraction::operator*(int i)
{CFraction t;t.deno=deno;t.nume=nume*i;return t.simplify();
}
CFraction CFraction::operator/(int i)
{CFraction t;t.deno=deno*i;t.nume=nume;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;//下面自行設計對其他運算符的重載的測試cout<<"n1+n2=";n=n1+n2;n.display();cout<<"n1-n2=";n=n1-n2;n.display();cout<<"n1*n2=";n=n1*n2;n.display();cout<<"n1/n2=";n=n1/n2;n.display();cout<<"n1+4=";n=n1.operator+(4);n.display();cout<<"n1-4=";n=n1.operator-(4);n.display();cout<<"n1*4=";n=n1.operator*(4);n.display();cout<<"n1/4=";n=n1.operator/(4);n.display();return 0;
}
?
運行結果:
(貼圖)
心得體會:
總結
以上是生活随笔為你收集整理的项目4-分数类和整型数的四则运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces - 272C D
- 下一篇: c语言中使用的字符常量其起止标记符是,2