分数的四则运算(c++)

#include <iostream>
#include <stdio.h>
using namespace std;
class A {
    int num;
    int den;
public:
     int getnum ()
     {
       return num;
     }
    int  getden()
    {
        return den;

    }
    A (int n,int d)
    {
        num=n;
        den=d;
    }
};
int  fun (int a,int b)
    {
	int temp,flag;
	if (a<b)
    {
       flag=a;a=b;b=flag;
    }
      while (a%b!=0)
      {temp=b;
      b=a%b;
	  a=temp;
      }
      return b;
    }
   void add (A a1,A a2)
    {
        int x1,x2,y1,y2,k;
        x1=a1.getnum();y1=a1.getden();x2=a2.getnum();y2=a2.getden();
        k=fun(x1*y2+x2*y1,y1*y2);
        cout<<a1.getnum()<<"/"<<a1.getden()<<"+"<<a2.getnum()<<"/"<<a2.getden()<<"=";
        if (((y1*y2)/k)==1)
            cout <<(x1*y2+x2*y1)/k<<endl;
        else
        cout <<(x1*y2+x2*y1)/k<<"/"<<(y1*y2)/k<<endl;
    }
    void difference (A a1,A a2)
    {
        int x1,x2,y1,y2,k;
        x1=a1.getnum();y1=a1.getden();x2=a2.getnum();y2=a2.getden();
        k=fun(x1*y2-x2*y1,y1*y2);
        cout<<a1.getnum()<<"/"<<a1.getden()<<"-"<<a2.getnum()<<"/"<<a2.getden()<<"=";
        if (((y1*y2)/k)==1)
            cout <<(x1*y2-x2*y1)/k<<endl;
        else
        cout <<(x1*y2-x2*y1)/k<<"/"<<(y1*y2)/k<<endl;
    }
    void multiply (A a1,A a2)
    {
        int x1,x2,y1,y2,k;
        x1=a1.getnum();y1=a1.getden();x2=a2.getnum();y2=a2.getden();
        k=fun(x1*x2,y1*y2);
        cout<<a1.getnum()<<"/"<<a1.getden()<<"*"<<a2.getnum()<<"/"<<a2.getden()<<"=";
        if (((y1*y2)/k)==1)
            cout <<(x1*x2)/k<<endl;
        else
        cout <<(x1*x2)/k<<"/"<<(y1*y2)/k<<endl;
    }
    void divide (A a1,A a2)
    {
        int x1,x2,y1,y2,k;
        x1=a1.getnum();y1=a1.getden();x2=a2.getnum();y2=a2.getden();
        k=fun(x1*y2,y1*x2);
        cout<<"("<<a1.getnum()<<"/"<<a1.getden()<<")"<<"/"<<"("<<a2.getnum()<<"/"<<a2.getden()<<")"<<"=";
        if (((y1*x2)/k)==1)
            cout <<(x1*y2)/k<<endl;
            else
        cout <<(x1*y2)/k<<"/"<<(y1*x2)/k<<endl;
    }
int main ()
{
    int x1,y1,x2,y2;
    printf ("please input  the first numerator and denominator\n");
    scanf ("%d%d",&x1,&y1);
    printf ("please input the second numerator and denominator\n");
    scanf ("%d%d",&x2,&y2);
    A a1(x1,y1);
    A a2(x2,y2);
    add (a1,a2);
    difference (a1,a2);
    multiply(a1,a2);
    divide (a1,a2);
    return 0;
}


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值