计算两个分数的和[C++上机作业]
题目:
定义“分数”结构体类型fraction,并编写函数计算两个分数的和
函数原形如下:
fraction add(fraction a ,fraction b); //计算两个分数的和,要求对结果进行化简
今天C++上机课的一道题。。
计算两个分数的和,并对结果进行化简。
程序如下:
#include<iostream.h>
struct fraction
{
int fenzi;
int fenmu;
};
fraction add(fraction a ,fraction b)
{
int i;
for(i=1;i<=b.fenmu;i++)
if((i*a.fenmu)%b.fenmu==0)
break;
int x,y;
x=i*a.fenmu; //通分过的分母
y=a.fenzi*i+b.fenzi*(x/b.fenmu); //通分过的分子
int q;
for(q=1;q<=y;q++)
if((q*x)%y==0)
break;
int t,l;
t=q*x; //通分过的分母与分子的最小公倍数
l=x*y/t; //通分过的分母与分子的最大公约数
if(x==y)
cout<<"这两个分数的和为:"<<"1"<<endl;
else
cout<<"这两个分数的和为:"<<y/l<<"/"<<x/l<<endl;
return (a,b);
}
void main()
{
fraction a,b;
cout<<"输第一个分数的分子与分母:"<<endl;
cin>>a.fenzi>>a.fenmu;
cout<<"输第二个分数的分子与分母:"<<endl;
cin>>b.fenzi>>b.fenmu;
add(a,b);
}