注册 登录
编程论坛 C++教室

新手问一个问题。c++子类的使用。出现问题

董世 发布于 2013-04-29 16:39, 750 次点击
这是假分数分数换成带分数。

要求就是要有一个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);
}


[ 本帖最后由 董世 于 2013-4-29 16:40 编辑 ]
2 回复
#2
董世2013-04-30 09:36
求大神帮忙啊
#3
董世2013-05-03 20:32
这个可以编译出来,但是我不明白出来的是乱码
1