![]() |
#2
董世2013-05-03 12:58
|

#include "iostream"
using namespace std;
class Fraction
{
protected:
int fenzi;
int fenmu;
double valud;
public :
Fraction(int m,int n)
{
Set(m,n);
}
Fraction(int k)
{
Set(k,1);
}
Fraction()
{
Set(0,1);
}
double GetValue()
{
return valud;
}
void GetFraction(int *Fenzi, int *Fenmu)
{
*Fenzi = fenzi;
*Fenmu=fenmu;
}
void Set(int Fenzi,int Fenmu)
{
fenzi=Fenzi;
fenmu=Fenmu;
if (Fenmu)
valud=Fenzi/Fenmu;
}
static Fraction Addition(Fraction m,Fraction n)
{
int a,b,c,d;
m.GetFraction(&a,&b);
n.GetFraction(&c,&d);
Fraction result;
if(b==d)
result.Set(a+c,b);
else
result.Set(a*d+b*c,b*d);
return result;
}
static Fraction Subtraction(Fraction m,Fraction n)
{
int a,b,c,d;
m.GetFraction(&a,&b);
n.GetFraction(&c,&d);
Fraction result;
if(b==d)
result.Set(a-c,b);
else
result.Set(a*d-b*c,b*d);
return result;
}
static Fraction Multiplication(Fraction m,Fraction n)
{
int a,b,c,d;
m.GetFraction(&a,&b);
n.GetFraction(&c,&d);
Fraction result;
result.Set(a*c,b*d);
return result;
}
static Fraction Division(Fraction m,Fraction n)
{
int a,b,c,d;
m.GetFraction(&a,&b);
n.GetFraction(&c,&d);
Fraction result;
result.Set(a*d+b*c,b*d);
return result;
}
};
class iFraction:public Fraction
{
int number;
public:
iFraction()
{
number=0;fenzi=0;fenmu=1;
}
iFraction(int Fenzi,int Fenmu,int Number)
{
fenzi=Fenzi;
fenmu=Fenmu;
number=Number;
}
int GetNumber()
{
return number;
}
void SetNumer(int n)
{
number=n;
}
void Show()
{
if (number)
cout<<number<<"#<"<<fenzi<<'/'<<fenmu<<'>'<<endl;
else
cout<<"<"<<fenzi<<'/'<<fenmu<<'>'<<endl;
}
};
iFraction convertF(Fraction f)
{
int a,b;
f.GetFraction(&a,&b);
iFraction i;
i.SetNumer(a/b);
i.Set(a-i.GetNumber()*b,b);
return i;
}
int main()
{
Fraction test1(11,3);
Fraction test2(6,3);
iFraction test3;
test3=convertF(Fraction::Addition(test1,test2));
test3.Show();
}
using namespace std;
class Fraction
{
protected:
int fenzi;
int fenmu;
double valud;
public :
Fraction(int m,int n)
{
Set(m,n);
}
Fraction(int k)
{
Set(k,1);
}
Fraction()
{
Set(0,1);
}
double GetValue()
{
return valud;
}
void GetFraction(int *Fenzi, int *Fenmu)
{
*Fenzi = fenzi;
*Fenmu=fenmu;
}
void Set(int Fenzi,int Fenmu)
{
fenzi=Fenzi;
fenmu=Fenmu;
if (Fenmu)
valud=Fenzi/Fenmu;
}
static Fraction Addition(Fraction m,Fraction n)
{
int a,b,c,d;
m.GetFraction(&a,&b);
n.GetFraction(&c,&d);
Fraction result;
if(b==d)
result.Set(a+c,b);
else
result.Set(a*d+b*c,b*d);
return result;
}
static Fraction Subtraction(Fraction m,Fraction n)
{
int a,b,c,d;
m.GetFraction(&a,&b);
n.GetFraction(&c,&d);
Fraction result;
if(b==d)
result.Set(a-c,b);
else
result.Set(a*d-b*c,b*d);
return result;
}
static Fraction Multiplication(Fraction m,Fraction n)
{
int a,b,c,d;
m.GetFraction(&a,&b);
n.GetFraction(&c,&d);
Fraction result;
result.Set(a*c,b*d);
return result;
}
static Fraction Division(Fraction m,Fraction n)
{
int a,b,c,d;
m.GetFraction(&a,&b);
n.GetFraction(&c,&d);
Fraction result;
result.Set(a*d+b*c,b*d);
return result;
}
};
class iFraction:public Fraction
{
int number;
public:
iFraction()
{
number=0;fenzi=0;fenmu=1;
}
iFraction(int Fenzi,int Fenmu,int Number)
{
fenzi=Fenzi;
fenmu=Fenmu;
number=Number;
}
int GetNumber()
{
return number;
}
void SetNumer(int n)
{
number=n;
}
void Show()
{
if (number)
cout<<number<<"#<"<<fenzi<<'/'<<fenmu<<'>'<<endl;
else
cout<<"<"<<fenzi<<'/'<<fenmu<<'>'<<endl;
}
};
iFraction convertF(Fraction f)
{
int a,b;
f.GetFraction(&a,&b);
iFraction i;
i.SetNumer(a/b);
i.Set(a-i.GetNumber()*b,b);
return i;
}
int main()
{
Fraction test1(11,3);
Fraction test2(6,3);
iFraction test3;
test3=convertF(Fraction::Addition(test1,test2));
test3.Show();
}