辛弃疾的著名古诗词:c++ 哪里有错误阿??

来源:百度文库 编辑:高校问答 时间:2024/05/03 07:43:59
#include <iostream.h>
//using namespace std;
class Fraction
{
public:
Fraction(){dn=0;nr=1;}
Fraction(int z,int m){nr=z;dn=m;}
friend operator +(Fraction &f1,Fraction &f2);
friend operator -(Fraction &f1,Fraction &f2);
friend operator *(Fraction &f1,Fraction &f2);
friend operator /(Fraction &f1,Fraction &f2);
private:
int dn;
int nr;
//dn是分母,nr是分子。
};
operator +(Fraction &f1,Fraction &f2)
{
int a,b,c,d;
Fraction f11;
f11.nr=f1.nr*f2.dn+f1.dn*f2.nr;
f11.dn=f2.dn*f1.dn;
for(int i=2;i<=9;i++)
if((f11.nr%i==0)&&(f11.dn%i==0))
{f11.nr=f11.nr/i;
f11.dn=f11.dn/i;
}
return Fraction(f11.nr,f11.dn);

}
operator -(Fraction &f1,Fraction &f2)
{
int a,b,c,d;
fraction f22;
f22.nr2=f1.nr*f2.dn-f1.dn*f2.nr;
f22.dn2=f2.dn*f1.dn;
for(int i=2;i<=9;i++)
if((f22.nr%i==0)&&(f22.dn%i==0))
{f22.nr=f22.nr/i;
f22.dn=f22.dn/i;
}
return Fraction(f22.nr,f22.dn);
}
operator *(Fraction &f1,Fraction &f2)
{
int a,b,c,d;
Fraction f33;
f33.nr=f1.nr*f2.nr;
f33.dn=f1.dn*f2.dn;
for(int i=2;i<=9;i++)
if((f33.nr%i==0)&&(f33.dn%i==0))
{ f33.nr=f33.nr/i;
f33.dn=f33.dn/i;
}
return Fraction(f33.nr,f33.dn);

}
//dn是分母,nr是分子。
operator /(Fraction &f1,Fraction &f2)
{
int a,b,c,d;
Fraction f44;
f44.nr=f1.nr*f2.dn;
f44.dn=f1.dn*f2.nr;
for(int i=2;i<=9;i++)
if((f44.nr%i==0)&&(f44.dn%i==0))
{ f44.nr=f44.nr/i;
f44.dn=f44.dn/i;
}
return Fraction(f44.nr,f44.dn);

}
void main()
{
int a,b,c,d;
cout<<"输入两个分数:"<<endl;
cin>>a;
cout<<"/";
cin>>b;
cout<<endl;
cin>>c;
cout<<"/";
cin>>d;
cout<<endl;
Fraction f4(a,b),f5(c,d);
cout<<f4+f5<<" "<<f4-f5<<" "<<f4*f5<<" "<<f4/f5;
}

在vc++6.0

1.每个成员函数都有return Fraction(##,##)
所以你每个成员函数前应有返回类型;

2.int a,b,c,d; 多余

3.cout<<f4+f5<<" "<<f4-f5<<" "<<f4*f5<<" "<<f4/f5;

没重载《;

#include <iostream.h>
//using namespace std;
class Fraction
{
public:
Fraction(){nr=0;dn=1;}
Fraction(int z,int m){nr=z;dn=m;}
friend Fraction operator +(Fraction &f1,Fraction &f2);
friend Fraction operator -(Fraction &f1,Fraction &f2);
friend Fraction operator *(Fraction &f1,Fraction &f2);
friend Fraction operator /(Fraction &f1,Fraction &f2);
friend ostream & operator <<(ostream & output ,Fraction &);
private:
int nr;
int dn;
//dn是分母,nr是分子。
};
//Fraction friend operator <<(Fraction &f1,Fraction &f2)
ostream & operator <<(ostream & output ,Fraction &fn)
{
if(fn.dn==fn.nr)
{
cout<<"1";
}
else if(fn.nr==0)
{
cout<<"0";
}
else
{
cout<<fn.nr<<"/"<<fn.dn;
}
return output;
}
Fraction operator +(Fraction &f1,Fraction &f2)
{
// int a,b,c,d;
Fraction f11;
f11.nr=f1.nr*f2.dn+f1.dn*f2.nr;
f11.dn=f2.dn*f1.dn;
for(int i=2;i<=9;i++)
if((f11.nr%i==0)&&(f11.dn%i==0))
{
f11.nr=f11.nr/i;
f11.dn=f11.dn/i;
}
return Fraction(f11.nr,f11.dn);

}
Fraction operator -(Fraction &f1,Fraction &f2)
{
// int a,b,c,d;
Fraction f22;
f22.nr=f1.nr*f2.dn-f1.dn*f2.nr;
f22.dn=f2.dn*f1.dn;
for(int i=2;i<=9;i++)
if((f22.nr%i==0)&&(f22.dn%i==0))
{
f22.nr=f22.nr/i;
f22.dn=f22.dn/i;
}
return Fraction(f22.nr,f22.dn);
}
Fraction operator *(Fraction &f1,Fraction &f2)
{
// int a,b,c,d;
Fraction f33;
f33.nr=f1.nr*f2.nr;
f33.dn=f1.dn*f2.dn;
for(int i=2;i<=9;i++)
if((f33.nr%i==0)&&(f33.dn%i==0))
{
f33.nr=f33.nr/i;
f33.dn=f33.dn/i;
}
return Fraction(f33.nr,f33.dn);
}
//dn是分母,nr是分子。
Fraction operator /(Fraction &f1,Fraction &f2)
{
// int a,b,c,d;
Fraction f44;
f44.nr=f1.nr*f2.dn;
f44.dn=f1.dn*f2.nr;
for(int i=2;i<=9;i++)
if((f44.nr%i==0)&&(f44.dn%i==0))
{
f44.nr=f44.nr/i;
f44.dn=f44.dn/i;
}
return Fraction(f44.nr,f44.dn);

}

void main()
{
int a,b,c,d;
cout<<"输入两个分数:"<<endl;
cout<<"输入分子:";
cin>>a;

cout<<"/";
cout<<"输入分母:";
cin>>b;
cout<<endl;
cout<<"输入分子:";
cin>>c;
cout<<"/";
cout<<"输入分母:";
cin>>d;
cout<<endl;
Fraction f4(a,b),f5(c,d);
cout<<f4+f5<<" "<<f4-f5<<" "<<f4*f5<<" "<<f4/f5;
}

如果您使用VS2005,将#include <iostream.h> 改为#include <iostream> ,就可以了,并且不要注释掉using namespace std;

//using namespace std;
去掉//
test?