约分函数错了呢?

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:45:30
#include<iostream.h>
#include<math.h>
class Fraction
{
int nume;
int deno;
public:
Fraction(int n,int d){nume=n;deno=d;}
void display()
{
cout<<nume<<"/"<<deno<<endl;
}
Fraction Gcm(Fraction &a)
{
int m,n,r;
if(abs(a.nume)<abs(a.deno))
{
do
{
m=a.deno;
n=a.nume;
r=m%n;
m=n;
n=r;

}while(r!=0);
a.deno=a.deno/m;
a.nume=a.nume/m;
}
else
{
do
{
m=a.nume;
n=a.deno;
r=m%n;
m=n;
n=r;
}while(r!=0);
a.deno=a.deno/m;
a.nume=a.nume/m;
}
if(a.deno<0)
{
a.deno=-a.deno;
a.nume=-a.nume;
}
return a;
}
};
v

改成这样

#include<iostream.h>
#include<math.h>

class Fraction
{
float nume;
float deno;
public:
Fraction(int n,int d){nume=n;deno=d;}
void display()
{
cout<<nume<<"/"<<deno<<endl;
}
Fraction Gcm(Fraction &a)
{
int m,n,r;
if(abs(a.nume)<abs(a.deno))
{
m=a.deno;
n=a.nume; //放到循环外面,如果在循环里m,n的值会一直重新赋值
do
{
r=m%n;
m=n;
n=r;

}while(r!=0);
a.deno=a.deno/m;
a.nume=a.nume/m;
}
else
{
m=a.nume;
n=a.deno; //放到循环外面,如果在循环里m,n的值会一直重新赋值
do
{
r=m%n;
m=n;
n=r;
}while(r!=0);
a.deno=a.deno/m;
a.nume=a.nume/m;
}
if(a.deno<0)
{
a.deno=-a.deno;
a.nume=-a.nume;
}
return a;
}
};
void main()<