△【OJ】(二)---C---分数类的四则运算

来源:互联网 发布:ncut算法matlab 编辑:程序博客网 时间:2024/05/19 18:14


题目要求如下:


-----

------------------------------------------------------------------------------------------------------------------------------------------

代码如下:

/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作    者:  沈远宏 * 完成日期:2014 年 06月27日 * 版 本 号:v1.0 * 问题描述:Description编写分数类Fraction,实现两个分数的加、减、乘和除四则运算。主函数已给定。Input每行四个数,分别表示两个分数的分子和分母,以0 0 0 0 表示结束。Output空格分隔的两个分数的减和除的结果。*/#include <iostream>using namespace std;class Fraction{private:    int deno;//分母    int nume;//分子    int k;//整数部分public:    void output();    void set(int de,int nu);    void simpilify();    friend istream& operator>>(istream& cin,Fraction &f);    friend Fraction operator+(Fraction f1,Fraction f2);    friend Fraction operator-(Fraction f1,Fraction f2);    friend Fraction operator*(Fraction f1,Fraction f2);    friend Fraction operator/(Fraction f1,Fraction f2);    friend bool operator==(Fraction f,int j);};void Fraction::output(){       if(k==0)       {           cout<<nume<<"/"<<deno;       }       else       {           cout<<k;       }}void Fraction::set(int de,int nu){     deno=de;     nume=nu;}void Fraction::simpilify(){    int t,r,x=nume,y=deno;    if(nume<0)x=-x;    if(deno<0)y=-y;    if(x<y)t=x,x=y,y=t;    while(y!=0)    {   r=x%y;        x=y;        y=r;    }   deno=deno/x;   nume=nume/x;   if(deno<0)   {       deno=-deno;       nume=-nume;   }   if(nume==deno)   {       k=1;   }   else if(nume==(-deno))   {       k=-1;   }   else   {       k=0;   }}istream& operator>>(istream& cin,Fraction &f){      cin>>f.nume>>f.deno;      return cin;}Fraction operator+(Fraction f1,Fraction f2){    Fraction f3;    f3.deno=f1.deno*f2.deno;    f3.nume=f1.deno*f2.nume+f1.nume*f2.nume;    f3.simpilify();    return f3;}Fraction operator-(Fraction f1,Fraction f2){    Fraction f3;    f3.deno=f1.deno*f2.deno;    f3.nume=f1.nume*f2.deno-f1.deno*f2.nume;    f3.simpilify();    return f3;}Fraction operator*(Fraction f1,Fraction f2){    Fraction f3;    f3.nume=f1.nume*f2.nume;    f3.deno=f1.deno*f2.deno;    f3.simpilify();    return f3;}Fraction operator/(Fraction f1,Fraction f2){    Fraction f3;    f3.nume=f1.nume*f2.deno;    f3.deno=f1.deno*f2.nume;    f3.simpilify();    return f3;}bool operator==(Fraction f,int j)//{    bool i=false;    if(f.deno==0&&f.nume==0)    {        i=true;    }    return i;}int main(){    Fraction f1,f2,f3;    while(cin>>f1>>f2)    {        if(f1==0&&f2==0)            break;        f3=f1-f2;        f3.output();        cout<<" ";        f3=f1/f2;        f3.output();        cout<<endl;    }    return 0;}

运行结果:


OJ要求结果输出例样:


0 0