您的位置:首页 > 编程语言 > C语言/C++

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

2015-06-09 18:23 736 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: