分数类和整数类的四则运算

来源:互联网 发布:nginx ffmpeg hls 编辑:程序博客网 时间:2024/05/01 10:17
/** 程序的版权和版本声明部分:* Copyright (c) 2013.烟台大学计算机学院。* All rights reserved.* 文件名称:分数类和整数类的四则运算* 作    者:冯冬影* 完成日期:2014 年 4月 17日* 版 本 号:v1.0* 对任务及求解方法的描述部分:* 输入描述:* 问题描述:* 程序输出:*/#include <iostream>#include<Cmath>using namespace std;class CFraction{private:    int nume;  // 分子    int deno;  // 分母public:    CFraction(int nu=0,int de=1);   //构造函数,初始化用    void set(int nu=0,int de=1);    //置值,改变值时用    void input(); //按照"nu/de"的格式,如"5/2"的形式输入    void simplify(); //化简(使分子分母没有公因子)    CFraction  operator+(CFraction &c);    CFraction  operator-(CFraction &c);    CFraction operator*(CFraction &c);    CFraction operator/(CFraction &c);    CFraction operator+(int a);    CFraction operator-(int a);    CFraction operator*(int a);    CFraction operator/(int a);    friend CFraction operator+(int a,CFraction &c3);    friend CFraction operator-(int a,CFraction &c3);    friend CFraction operator*(int a,CFraction &c3);    friend CFraction operator/(int a,CFraction &c3);};void CFraction::input(){    int nu,de;    char k;    cin>>nu>>k>>de;    nume=nu;    deno=de;}void CFraction::set(int nu,int de){    if(de!=0)    {        nume=nu;        deno=de;    }}CFraction::CFraction(int nu,int de){    if(de!=0)    {        nume=nu;        deno=de;    }    else        cout<<"初始化错误,请重新初始化!";}void CFraction::simplify() //化简(使分子分母没有公因子){    int t,r,a,b;    a=nume;    b=deno;    if(a<b)    {        t=a;        a=b;        b=t;    }    while (b!=0)    {        r=a%b;        a=b;        b=r;    }    nume=nume/a;    deno=deno/a;    if(deno==1)        cout<<nume<<endl;    else        cout<<nume<<"/"<<deno<<endl;}CFraction CFraction::operator+(CFraction &c){    int n,d;    n=nume*c.deno+deno*c.nume;    d=deno*c.deno;    CFraction c3(n,d);    return c3;}CFraction CFraction::operator-(CFraction &c){    int n,d;    n=nume*c.deno-deno*c.nume;    d=deno*c.deno;    CFraction c3(n,d);    return c3;}CFraction CFraction::operator*(CFraction &c){    int n,d;    n=nume*c.nume;    d=deno*c.deno;    CFraction c3(n,d);    return c3;}CFraction CFraction::operator/(CFraction &c){    int n,d;    n=nume*c.deno;    d=deno*c.nume;    CFraction c3(n,d);    return c3;}CFraction CFraction::operator+(int a){    int n,d;    n=nume+a*deno;    d=deno;    CFraction c3(n,d);    return c3;}CFraction CFraction::operator-(int a){    int n,d;    n=nume-a*deno;    d=deno;    CFraction c3(n,d);    return c3;}CFraction CFraction:: operator*(int a){    int n,d;    n=a*nume;    d=deno;    CFraction c3(n,d);    return c3;}CFraction CFraction:: operator/(int a){    int n,d;    n=nume;    d=deno*a;    CFraction c3(n,d);    return c3;}CFraction operator+(int a,CFraction &c3){    int n,d;    n=c3.nume+a*c3.deno;    d=c3.deno;    CFraction c4(n,d);    return c4;}CFraction operator-(int a,CFraction &c3){    int n,d;    n=c3.nume-a*c3.deno;    d=c3.deno;    CFraction c4(n,d);    return c4;}CFraction  operator*(int a,CFraction &c3){    int n,d;    n=a*c3.nume;    d=c3.deno;    CFraction c4(n,d);    return c4;}CFraction  operator/(int a,CFraction &c3){    int n,d;    n=a*c3.deno;    d=c3.nume;    CFraction c4(n,d);    return c4;}int main(){    CFraction c1,c2,c;    cout<<"请输入第一个分数(按照n/m的格式):";    c1.input();    cout<<"请输入第二个分数(按照n/m的格式):";    c2.input();    int a=5;    c=c1+c2;    cout<<"c1+c2=";    c.simplify();    c=c1-c2;    cout<<"c1-c2=";    c.simplify();    c=c1*c2;    cout<<"c1*c2=";    c.simplify();    c=c1/c2;    cout<<"c1/c2=";    c.simplify();    c=c1+a;    cout<<"c1+"<<a<<"=";    c.simplify();    c=c1-a;    cout<<"c1-"<<a<<"=";    c.simplify();    c=c1*a;    cout<<"c1*"<<a<<"=";    c.simplify();    c=c1/a;    cout<<"c1/"<<a<<"=";    c.simplify();    c=a+c2;    cout<<a<<"+c2=";    c.simplify();    c=a-c2;    cout<<a<<"-c2=";    c.simplify();    c=a*c2;    cout<<a<<"*c2=";    c.simplify();    c=a/c2;    cout<<a<<"/c2=";    c.simplify();}
运行结果
0 0