Unit8-problem-分数(补写)
2014-04-28 19:05
246 查看
/*Univercity:烟台大学 *@Class</A>计134~4 *@Author:薛富磊 *@Time:2014-4-28 *@Function: *@Args: *@Return: */ #include<iostream> #include<Cmath> using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 public: //构造函数及运算符重载的函数声明 CFraction(int nu=0,int de=1):nume(nu),deno(de) {} void simplify();//化最简 void display();//显示 CFraction operator+(const CFraction &c); //两个分数相加,结果要化简 CFraction operator-(const CFraction &c); //两个分数相减,结果要化简 CFraction operator*(const CFraction &c); //两个分数相乘,结果要化简 CFraction operator/(const CFraction &c); //两个分数相除,结果要化简 bool operator>(const CFraction &c); bool operator<(const CFraction &c); bool operator==(const CFraction &c); bool operator!=(const CFraction &c); bool operator>=(const CFraction &c); bool operator<=(const CFraction &c); }; //化简 void CFraction::simplify() { int a,b,c; //数学函数:fabs 原型:extern float fabs(float x); //用法:#include <math.h> 功能:求浮点数x的绝对值 //说明:计算|x|, 当x不为负时返回x,否则返回-x a=fabs(nume); b=fabs(deno); //求最大公约数 while(c=a%b) { a=b; b=c; } nume=nume/b; deno=deno/b; if(deno<0) { nume=-nume; deno=-deno; } } //显示 void CFraction::display() { cout<<nume<<"/"<<deno<<endl; } //两个分数相加 CFraction CFraction::operator+(const CFraction &c) { CFraction s; s.nume=nume*c.deno+c.nume*deno; s.deno=deno*c.deno; s.simplify(); return s; } //两个分数相减 CFraction CFraction::operator-(const CFraction &c) { CFraction s; s.nume=nume*c.deno-c.nume*deno; s.deno=deno*c.deno; s.simplify(); return s; } //两个分数相乘 CFraction CFraction::operator*(const CFraction &c) { CFraction s; s.nume=nume*c.nume; s.deno=deno*c.deno; s.simplify(); return s; } //两个分数相除 CFraction CFraction::operator/(const CFraction &c) { CFraction s; s.nume=nume*c.deno; s.deno=deno*c.nume; s.simplify(); return s; } bool CFraction::operator>(const CFraction &c) { int a,b; a=nume*c.deno; b=c.nume*deno; if((a-b)>0) return true; return false; } bool CFraction::operator<(const CFraction &c) { int a,b; a=nume*c.deno; b=c.nume*deno; if ((a-b)<0) return true; return false; } bool CFraction::operator==(const CFraction &c) { if(*this==c)return true; return false; } bool CFraction::operator!=(const CFraction &c) { int a,b; a=nume*c.deno; b=c.nume*deno; if ((a-b)!=0) return true; return false; } bool CFraction::operator>=(const CFraction &c) { if (*this<c) return false; return true; } // 分数比较大小 bool CFraction::operator<=(const CFraction &c) { if (*this>c) return false; return true; } //重载函数的实现及用于测试的main()函数 int main() { CFraction x(2,5),y(-4,14),s; cout<<"分数x=2/5 y=-4/14"<<endl; s=x+y; cout<<"x+y="; s.display(); s=x-y; cout<<"x-y="; s.display(); s=x*y; cout<<"x*y="; s.display(); s=x/y; cout<<"x/y="; s.display(); x.display(); if (x>y) cout<<"大于"<<endl; if (x<y) cout<<"小于"<<endl; if (x==y) cout<<"等于"<<endl; y.display(); cout<<endl; return 0; }
相关文章推荐
- Poj 1980 Unit Fraction Partition (分数分解 搜索)
- Unit9-problem-分数类
- 分数加减法 http://acm.nyist.net/JudgeOnline/problem.php?pid=111
- Problem H: 2.4.5 Fractions to Decimals 分数化小数
- Unit8_problem1_复数类中的运算符重载
- Unit--problem3 穿越时间表
- Unit_problem1.2默认你
- Unit9-problem-一元一次方程
- Problem H: 2.4.5 Fractions to Decimals 分数化小数
- Unit5_problem1.3多输出默认你
- weblog.java.net: The Problem with Unit Testing
- Unit_problem(拓)审判间谍
- Unit8-problem1_友元类重载
- Problem H: 2.4.5 Fractions to Decimals 分数化小数
- Problem D: 分数减法——结构体
- Problem D: 分数减法——结构体
- Problem G: 小勇学分数
- Unit9_problem1-复数大排练
- Entity Framework Unit Testing problem and solution(转)