分数的加减乘除(C++的有理数类)

来源:互联网 发布:美丽折淘宝客助手 编辑:程序博客网 时间:2024/05/01 16:40
#include <iostream>#include <cstdio>using namespace std;class Number{int numerator,denominator;public:void input(int a,int b){   numerator=a;   denominator=b;}void output(int &a,int &b){a=numerator;b=denominator;}};int fun(int a,int b){    int temp;    if(a<b)    {        temp=a;        a=b;        b=temp;    }    while(b)    {        temp=a;        a=b;        b=temp%b;    }    return a;}void add(Number num1,Number num2){    int num_num1,num_num2,num_den1,num_den2;    int temp,temp1,temp2;    num1.output(num_num1,num_den1);    num2.output(num_num2,num_den2);    temp=num_den2*num_den1;    temp1=num_num1*num_den2;    temp2=num_num2*num_den1;    temp1=temp1+temp2;    int index=fun(temp1,temp);    temp1=temp1/index;    temp=temp/index;    printf("%d/%d + %d/%d = %d/%d\n",num_num1,num_den1,num_num2,num_den2,temp1,temp);}void subtract(Number num1,Number num2){    int num_num1,num_num2,num_den1,num_den2;    int temp,temp1,temp2;    num1.output(num_num1,num_den1);    num2.output(num_num2,num_den2);    temp=num_den2*num_den1;    temp1=num_num1*num_den2;    temp2=num_num2*num_den1;    temp1=temp1-temp2;    int index=fun(temp1,temp);    temp1=temp1/index;    temp=temp/index;    printf("%d/%d + %d/%d = %d/%d\n",num_num1,num_den1,num_num2,num_den2,temp1,temp);}void multiply(Number num1,Number num2){    int num_num1,num_num2,num_den1,num_den2;    int temp1,temp2;    num1.output(num_num1,num_den1);    num2.output(num_num2,num_den2);    temp1=num_num1*num_num2;    temp2=num_den1*num_den2;    int index=fun(temp1,temp2);    temp1=temp1/index;    temp2=temp2/index;    printf("%d/%d * %d/%d = %d/%d\n",num_num1,num_den1,num_num2,num_den2,temp1,temp2);}void divide(Number num1,Number num2){    int num_num1,num_num2,num_den1,num_den2;    int temp1,temp2;    num1.output(num_num1,num_den1);    num2.output(num_num2,num_den2);    temp1=num_num1*num_den2;    temp2=num_den1*num_num2;    int index=fun(temp1,temp2);    temp1=temp1/index;    temp2=temp2/index;    printf("%d/%d / %d/%d = %d/%d\n",num_num1,num_den1,num_num2,num_den2,temp1,temp2);}int main(){Number num1,num2;int n,a,b,peace=0;cout<<"please input numerator and denominator.\n";cout<<"first number:";    cin>>a>>b;    num1.input(a,b);    cout<<"last number:";    cin>>a>>b;    num2.input(a,b);while(1)    {        cout<<"         1.Change numerator and denominator.\n";        cout<<"         2.Add\n";        cout<<"         3.Subtract\n";        cout<<"         4.Multiply\n";        cout<<"         5.Divide\n";        cout<<"         6.end\n";        cout<<"Please input a choose:";        cin>>n;        switch(n)        {            case 1:                cout<<"first number:";                cin>>a>>b;                num1.input(a,b);                cout<<"last number:";                cin>>a>>b;                num2.input(a,b);                break;            case 2:                add(num1,num2);                break;            case 3:                subtract(num1,num2);                break;            case 4:                multiply(num1,num2);                break;            case 5:                divide(num1,num2);                break;            case 6:                peace=1;                break;        }        if(peace)            break;    }return 0;}

0 0