第八周项目3(拓展)-分数和整形数的4则运算

来源:互联网 发布:淘宝预定是什么意思 编辑:程序博客网 时间:2024/05/15 01:16
/**程序的版权和版本声明部分:*Copyright(c)2014,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:田成琳*完成日期:2014  年 4 月 15 日*版本号:v1.0*对任务及求解方法的描述部分:*输入描述:无*问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、*程序输出:- -*问题分析:*算法设计:*/#include<iostream>using namespace std;int gongbeis(int,int);class CFraction{private:    int nume;  // 分子    int deno;  // 分母public:    CFraction(int n=0,int d=0);    void set(int n,int d);    friend CFraction operator + (CFraction &a,CFraction &b);    friend CFraction operator + (int t,CFraction &a);    friend CFraction operator + (CFraction &a,int t);    friend CFraction operator - (CFraction &a,CFraction &b);    friend CFraction operator - (int t,CFraction &a);    friend CFraction operator - (CFraction &a,int t);    friend CFraction operator * (CFraction &a,CFraction &b);    friend CFraction operator * (int t,CFraction &a);    friend CFraction operator * (CFraction &a,int t);    friend CFraction operator / (CFraction &a,CFraction &b);    friend CFraction operator / (int t,CFraction &a);    friend CFraction operator / (CFraction &a,int t);    void output();    void setfy();};CFraction::CFraction(int n,int d){    nume=n;    deno=d;}void CFraction::set(int n,int d){    nume=n;    deno=d;}void CFraction::output(){    cout<<nume<<"/"<<deno<<endl;}CFraction operator + (CFraction &a,CFraction &b){    int c=gongbeis(a.deno,b.deno);    a.nume*=(c/a.deno);    a.deno=c;    b.nume*=(c/b.deno);    b.deno=c;    a.nume+=b.nume;    a.setfy();    CFraction t(a.nume,a.deno);    return t;}CFraction operator + (int t,CFraction &a){    CFraction d;    int c=gongbeis(a.deno,t);    a.nume*=(c/a.deno);    a.deno=c;    d.nume=t*c;    d.deno=c;    a.nume+=d.nume;    a.setfy();    CFraction b(a.nume,a.deno);    return b;}CFraction operator + (CFraction &a,int t){    CFraction d;    int c=gongbeis(a.deno,t);    a.nume*=(c/a.deno);    a.deno=c;    d.nume=t*c;    d.deno=c;    a.nume+=d.nume;    a.setfy();    CFraction b(a.nume,a.deno);    return b;}CFraction operator - (CFraction &a,CFraction &b){    int c=gongbeis(a.deno,b.deno);    a.nume*=(c/a.deno);    a.deno=c;    b.nume*=(c/b.deno);    b.deno=c;    a.nume-=b.nume;    a.setfy();    CFraction t(a.nume,a.deno);    return t;}CFraction operator - (int t,CFraction &a){    CFraction d;    int c=gongbeis(a.deno,t);    a.nume*=(c/a.deno);    a.deno=c;    d.nume=t*c;    d.deno=c;    a.nume-=d.nume;    a.setfy();    CFraction b(a.nume,a.deno);    return b;}CFraction operator - (CFraction &a,int t){    CFraction d;    int c=gongbeis(a.deno,t);    a.nume*=(c/a.deno);    a.deno=c;    d.nume=t*c;    d.deno=c;    a.nume-=d.nume;    a.setfy();    CFraction b(a.nume,a.deno);    return b;}CFraction operator * (CFraction &a,CFraction &b){    a.nume*=b.nume;    a.deno*=b.nume;    a.setfy();    CFraction t(a.nume,a.deno);    return t;}CFraction operator * (int t,CFraction &a){    a.nume*=t;    a.setfy();    CFraction b(a.nume,a.deno);    return b;}CFraction operator * (CFraction &a,int t){    a.nume*=t;    a.setfy();    CFraction b(a.nume,a.deno);    return b;}CFraction operator / (CFraction &a,CFraction &b){    int z;    z=b.nume;    b.nume=b.deno;    b.deno=z;    a.nume*=b.nume;    a.nume*=a.deno;    a.setfy();    CFraction t(a.nume,a.deno);    return t;}CFraction operator / (int t,CFraction &a){    CFraction d;    int z;    z=a.nume;    a.nume=a.deno;    a.deno=z;    a.nume*=t;    a.setfy();    CFraction b(a.nume,a.deno);    return b;}CFraction operator / (CFraction &a,int t){    CFraction d;    d.nume=1;    d.deno=t;    a.nume*=d.nume;    a.deno*=d.deno;    a.setfy();    CFraction b(a.nume,a.deno);    return b;}int main(){    CFraction t,t1(4,5),t2(3,5),t3(4,15),t4(9,5),t5(-3,2),t6(6,11);    CFraction t7(5,16),t8(1,3),t9(1,5),t10(1,5),t11(15,51),t12(1,8);    cout<<"t1=";    t1.output();    cout<<"t2=";    t2.output();cout<<"t1+t2=";    t=t1+t2;    t.output();    cout<<"t3-t4=";    t=t3-t4;    t.output();    cout<<"t5*t6=";    t=t5*t6;    t.output();    cout<<"t7/t8=";    t=t7/t8;    t.output();    cout<<"3+t9=";    t=3+t9;    t.output();    cout<<"t10-2=";    t=t10-2;    t.output();    cout<<"t11*3=";    t=t11*3;    t.output();    cout<<"t12/2=";    t=t12/2;    t.output();    return 0;}int gongbeis(int a,int b){    int i;    for(i=1; i<=a*b; i++)        if(i%a==0&&i%b==0)            break;    return i;}void CFraction::setfy(){    int i,t;    if(nume>deno)        t=nume;    else        t=deno;    for(i=2; i<=t; i++)    {        while(nume%i==0&&deno%i==0)        {            nume/=i;            deno/=i;        }    }}


运行结果:

心得体会:吃饭去。

0 0
原创粉丝点击