![]() |
#2
董世2013-04-30 09:36
|
要求就是要有一个ifraction子类,然后继承Fraction里的东西,还要有一个convertF来把假分数换算成带分数。我这个程序没有运行,我知道我在设计ifraction和convert那里有问题,我的引用应该是有问题,可能不能访问,这里是两个分数加法,然后显示假分数,带分数。

#include<iostream>
using namespace std;
class Fraction // define a class called Fraction
{
public:
void settop(int tt); // convert the variable
void setbottom(int bb);
void fractionprint(int t,int b); //define main operator function add sub mul and div
Fraction F_add(Fraction & A);
void simple(); // output and 化简(do not know how to write in English) function
void print();
protected:
int b;
int t;
};
class iFraction: protected Fraction // 定义ifraction//
{
friend void convertF(); //友元类的convertf//
public:
void printmixed(); //这个是输出的带分数的//
private:
int m;
int mt;
int mb;
}
void convertF() //我觉得这里肯定有问题//
{
m=t/b;
mt=t%b;
mb=b;
}
void iFraction::printmixed(); //这个是输出带分数的程序,好像也有问题//
{
if(b==1||t==0)
cout<<t<<endl;
else
convert()
cout<<m<<mt<<mb<<endl;
}
Fraction Fraction::F_add(Fraction &A)
{
if(A.b==b)
{
t=A.t+t;
}
else
{
t=t*A.b+A.t*b;
b=A.b*b;
}
simple();
cout<< "The sum of it is:";
print();
printmixed();
return A;
}
void Fraction::simple()
{
int i;
for(i=2;t>=i;i++)
{
if(b%i==0&&t%i==0)
{
b=b/i;
t=t/i;
i--;
}
}
}
void Fraction::print()
{
if(b==1||t==0)
cout<<t<<endl;
else
cout<<t<<"/"<<b<<endl;
}
int main()
{
int t1,t2,b1,b2,c;// declare new varibles
char ch;
Fraction A,B,s; //declare pointer
cout<<" Enter numerator and denominator of 1st fraction:"; // input the number
cin>>t1>>b1;
cout<<" Enter numerator and denominator of 2nd fraction:";
cin>>t2>>b2;
s.fractionprint(t1,b1);
s.fractionprint(t2,b2);
cout<<endl;
A.settop(t1);
B.settop(t2);
A.setbottom(b1);
B.setbottom(b2);
A.F_add(B);
}
using namespace std;
class Fraction // define a class called Fraction
{
public:
void settop(int tt); // convert the variable
void setbottom(int bb);
void fractionprint(int t,int b); //define main operator function add sub mul and div
Fraction F_add(Fraction & A);
void simple(); // output and 化简(do not know how to write in English) function
void print();
protected:
int b;
int t;
};
class iFraction: protected Fraction // 定义ifraction//
{
friend void convertF(); //友元类的convertf//
public:
void printmixed(); //这个是输出的带分数的//
private:
int m;
int mt;
int mb;
}
void convertF() //我觉得这里肯定有问题//
{
m=t/b;
mt=t%b;
mb=b;
}
void iFraction::printmixed(); //这个是输出带分数的程序,好像也有问题//
{
if(b==1||t==0)
cout<<t<<endl;
else
convert()
cout<<m<<mt<<mb<<endl;
}
Fraction Fraction::F_add(Fraction &A)
{
if(A.b==b)
{
t=A.t+t;
}
else
{
t=t*A.b+A.t*b;
b=A.b*b;
}
simple();
cout<< "The sum of it is:";
print();
printmixed();
return A;
}
void Fraction::simple()
{
int i;
for(i=2;t>=i;i++)
{
if(b%i==0&&t%i==0)
{
b=b/i;
t=t/i;
i--;
}
}
}
void Fraction::print()
{
if(b==1||t==0)
cout<<t<<endl;
else
cout<<t<<"/"<<b<<endl;
}
int main()
{
int t1,t2,b1,b2,c;// declare new varibles
char ch;
Fraction A,B,s; //declare pointer
cout<<" Enter numerator and denominator of 1st fraction:"; // input the number
cin>>t1>>b1;
cout<<" Enter numerator and denominator of 2nd fraction:";
cin>>t2>>b2;
s.fractionprint(t1,b1);
s.fractionprint(t2,b2);
cout<<endl;
A.settop(t1);
B.settop(t2);
A.setbottom(b1);
B.setbottom(b2);
A.F_add(B);
}
[ 本帖最后由 董世 于 2013-4-29 16:40 编辑 ]