课程设计__分数的计算

1、操作符重载

2、类的封装

#include <stdio.h>
#include <algorithm>
#include <iostream>

using namespace std;

int gcd(int m,int n)///求最大公约数
{
    if(n==0)
        return m;
    else return gcd(n,m%n);
}

class Fraction
{
public:
    Fraction();
    Fraction(int a,int b):molecule(a),denominator(b) {}
    void setdata();
    void display();
    Fraction operator *(Fraction &a)
    {
        Fraction c;
        int temp1;///分子
        int temp2;///分母
        int L;///最大公约数
        temp1=this->molecule*a.molecule;
        temp2=this->denominator*a.denominator;
        L=gcd(temp1,temp2);
        c.molecule=temp1/L;
        c.denominator=temp2/L;
        return c;
    }
    Fraction operator +(Fraction &a)
    {
        Fraction c;
        int temp1;///分子
        int temp2;///分母
        int L;///最大公约数
        temp1=this->molecule*a.denominator+this->denominator*a.molecule;
        temp2=this->denominator*a.denominator;
        L=gcd(temp1,temp2);
        c.molecule=temp1/L;
        c.denominator=temp2/L;
        return c;
    }
    Fraction operator -(Fraction &a)
    {
        Fraction c;
        int temp1;///分子
        int temp2;///分母
        int L;///最大公约数
        temp1=this->molecule*a.denominator-this->denominator*a.molecule;
        temp2=this->denominator*a.denominator;
        L=gcd(temp1,temp2);
        c.molecule=temp1/L;
        c.denominator=temp2/L;
        return c;
    }
    Fraction operator /(Fraction &a)
    {
        Fraction c;
        int temp1;///分子
        int temp2;///分母
        int L;///最大公约数
        temp1=this->molecule*a.denominator;
        temp2=this->denominator*a.molecule;
        L=gcd(temp1,temp2);
        c.molecule=temp1/L;
        c.denominator=temp2/L;
        return c;
    }
private:
    int molecule;///分子
    int denominator;///分母
};

Fraction::Fraction()
{
    molecule=0;
    denominator=1;
}

void Fraction::setdata()
{
    cin>>molecule>>denominator;
}

void Fraction::display()
{
    cout<<molecule<<"/"<<denominator<<endl;
}

int main()
{
    Fraction a,b,c;
    printf("This is Fraction's operation
");
    printf("Please input your wants Fraction's operation
");
    char o;
    scanf("%c",&o);
    system("cls");
    switch (o)
    {
    case '+':
        printf("Please input two Fraction's molecule and imag
");
        a.setdata();
        b.setdata();
        c=a+b;
        c.display();
        break;
    case '-':
        printf("Please input two Fraction's molecule and imag
");
        a.setdata();
        b.setdata();
        c=a-b;
        c.display();
        break;
    case '*':
        printf("Please input two Fraction's molecule and imag
");
        a.setdata();
        b.setdata();
        c=a*b;
        c.display();
        break;
    case '/':
        printf("Please input two Fraction's molecule and imag
");
        a.setdata();
        b.setdata();
        c=a/b;
        c.display();
        break;
    }
    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/TreeDream/p/5247486.html