回 帖 发 新 帖 刷新版面

主题:这是我写的一个关于类的程序,要求输入分数,要能实现对分数的加减乘除,然后输出,可是不知道错哪了,麻烦

#include<iostream>
using namespace std;

class Fenshu
{
    public: 
        void input_fenshu();
        void yuefen_fenshu();
        void add_fenshu();
        void mul_fenshu();
        void sub_fenshu();
        void div_fenshu();
    
    private:
        int fz; 
        int fm;
};

void Fenshu::input_fenshu()
{
    cin>>fz;
    cin>>fm;
}

void Fenshu::yuefen_fenshu()
{
    int s;
    fz/=s;
    fm/=s;
   printf("the result is %d/%d\n",fz,fm);
}

void Fenshu::add_fenshu()                                   //作加法
{
    int u1,u2;
    int v,a,b,c,d;
    int fz1,fm1;
    u1=v/b*a;
    u2=v/d*c;
    fz1=u1+u2;
    fm1=v;
    void Fenshu::yuefen_fenshu();
}

void Fenshu::mul_fenshu()                                   //作乘法
{
    int u1,u2;
    int a,b,c,d;
    u1=a*c;
    u2=b*d;
    void Fenshu::yuefen_fenshu();
}

void Fenshu::sub_fenshu()                                    //作减法
{
    int u1,u2;
    int v,a,b,c,d;
    u1=v/b*a;
    u2=v/d*c;
    fz=u1-u2;
    fm=v;
    void Fenshu::yuefen_fenshu();
}

void Fenshu::div_fenshu()                                    //作除法
{
    int u1,u2;
    int a,b,c,d;
    u1=a*d;
    u2=b*c;
    void Fenshu::yuefen_fenshu();
}


int main()
{Fenshu f;
  
     f.input_fenshu();
     f.yuefen_fenshu();
     f.add_fenshu();
     f.mul_fenshu();
     f.sub_fenshu();
     f.div_fenshu(); 

return 0;
}

回复列表 (共6个回复)

沙发

这个程序要怎么改呀?麻烦各位高手给看一下,谢谢了!

板凳

我很奇怪,分数的加减乘除操作难道只要输入一个分数,还有你程序中有很多没有初始化的变量

3 楼

我总觉得你input-fenshu()函数最好用构造函数来完成

4 楼

恩,前些天老师讲了个用操作符重载的方法来实现的,感觉蛮好的

5 楼


[em3]这个程序是你自己写的吗?
#include<iostream>
using namespace std;

class Fenshu
{
    public: 
        void input_fenshu();
        void yuefen_fenshu();
        void add_fenshu();
        void mul_fenshu();
        void sub_fenshu();
        void div_fenshu();
    
    private:
        int fz; 
        int fm;
};

void Fenshu::input_fenshu()
{
    cin>>fz;
    cin>>fm;
}

void Fenshu::yuefen_fenshu()   //S的值是多少?它都没初值,怎求?这又是求什么?
{
    int s;
    fz/=s;
    fm/=s;
   printf("the result is %d/%d\n",fz,fm);
}

void Fenshu::add_fenshu()                                   //作加法
{
    int u1,u2;
    int v,a,b,c,d;
    int fz1,fm1;
    u1=v/b*a;
    u2=v/d*c;
    fz1=u1+u2;
    fm1=v;
    void Fenshu::yuefen_fenshu();
}

void Fenshu::mul_fenshu()                                   //作乘法
{
    int u1,u2;
    int a,b,c,d;
    u1=a*c;
    u2=b*d;
    void Fenshu::yuefen_fenshu();
}

void Fenshu::sub_fenshu()                                    //作减法
{
    int u1,u2;
    int v,a,b,c,d;
    u1=v/b*a;
    u2=v/d*c;
    fz=u1-u2;
    fm=v;
    void Fenshu::yuefen_fenshu();
}

void Fenshu::div_fenshu()                                    //作除法
{
    int u1,u2;
    int a,b,c,d;
    u1=a*d;
    u2=b*c;
    void Fenshu::yuefen_fenshu();
}


int main()
{Fenshu f;
  
     f.input_fenshu();
     f.yuefen_fenshu();
     f.add_fenshu();
     f.mul_fenshu();
     f.sub_fenshu();
     f.div_fenshu(); 

return 0;
}
以上a,b,c等变量都没有值,是不是你弄错![em2]真是很困惑!

6 楼

这是我以前的关于这一块的代码,看看能不能帮上什么忙,如代码有什么问题也可以指出来,谢谢。
/*一个关于类的程序,要求输入分数,要能实现对分数的加减乘除*/
#include <iostream>
using namespace std;


inline int Abs_bit(int iNum )
{
     int out = iNum;
     int temp = iNum;

     temp = temp >> 31;
     out = out ^ temp;
     out = out - temp;

     return out;
}

class Fraction
{
public:
    Fraction();
    Fraction(int iMolecule, int iDenominator);
    void showFraction();
    Fraction operator +(const Fraction fra);
    Fraction operator -(const Fraction fra);
    Fraction operator *(const Fraction fra);
    Fraction operator /(      Fraction fra);
private:
    int iMolecule;
    int    iDenominator;
};

Fraction::Fraction()
{
    iMolecule    = 0;
    iDenominator = 1;  //the denominator must be not 0;
}


Fraction::Fraction(int iMolecule, int iDenominator)
{
   this->iMolecule    = iMolecule;
   this->iDenominator = iDenominator;
}


void Fraction::showFraction()
{
    if((iMolecule < 0) && (iDenominator < 0))
    {
        iMolecule    = Abs_bit(iMolecule);
        iDenominator = Abs_bit(iDenominator);
    }

    cout<<"the fraction is ";

    if(iMolecule * iDenominator < 0 )
    {
        iMolecule    = Abs_bit(iMolecule);
        iDenominator = Abs_bit(iDenominator);

        cout<<"-"<<iMolecule<<"/"<<iDenominator<<endl;
    }else
    {

        cout<<iMolecule<<"/"<<iDenominator<<endl;
    }
}

Fraction Fraction::operator +(const Fraction fra)
{
    Fraction temp = *this;
    temp.iMolecule    = temp.iMolecule * fra.iDenominator + temp.iDenominator * fra.iMolecule;
    temp.iDenominator = temp.iDenominator * fra.iDenominator;

    return temp;
}

Fraction Fraction::operator -(const Fraction fra)
{
    Fraction temp = *this;

    temp.iMolecule    = temp.iMolecule * fra.iDenominator - temp.iDenominator * fra.iMolecule;
    temp.iDenominator = temp.iDenominator * fra.iDenominator;

    return temp;
}

Fraction Fraction::operator *(const Fraction fra)
{
    Fraction temp = *this;

    temp.iMolecule    = temp.iMolecule * fra.iMolecule;
    temp.iDenominator = temp.iDenominator * fra.iDenominator;

    return temp;
}

Fraction Fraction::operator /(const Fraction fra)
{
    int      temp;
    Fraction tempFra  = fra;
    Fraction tempThis = *this;

    temp             = tempFra.iMolecule;
    tempFra.iMolecule    = tempFra.iDenominator;
    tempFra.iDenominator = temp;

    tempThis = tempThis * tempFra;

    return tempThis;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册