类,问题显示我的最终结果C ++

时间:2014-01-17 16:45:10

标签: c++ class

我的程序应该简化num和denom。但我必须使用一个类,并使用显示功能来显示我的最终结果,但每次我显示它。它给我82个数字和21305 ...对于书房。它就像没有从Fraction :: set获得数字。

任何人都可以向我解释我做错了什么,以及我不喜欢使用课程。谢谢你,并提前。

#include <iostream>
using namespace std;

 class Fraction
 {
        int num, den;

        public:
                void set(int,int);
                void display();
 };

 int main(void) {
     Fraction fraction;
     int num, den;

     cout << "Fraction Simplifier" << endl;
     cout << "===================" << endl;

     cout << "Numerator   : ";
     cin >> num;
     cout << "Denomenator : ";
     cin >> den;
     cout << endl;

     fraction.set(num, den);
     fraction.display();

     cout << endl;

     return 0;
 }

void Fraction::set(int num, int  den)
{
        int i;

        for( i = num * den; i > 1; i--)
        {
                if(den % i == 0 && num % i == 0)
                {
                        den/=i;
                        num/=i;
                }
        }
}
void Fraction::display()
{
        cout << num << endl;
        cout << den << endl;
}

2 个答案:

答案 0 :(得分:1)

Fraction::set内,无论何时引用numden,都是函数参数。

最后,您可能希望将这些值“保存”到成员变量中,使用this->消除歧义

this->num = num;
this->den = den;

这不是消歧,但是你知道。

答案 1 :(得分:0)

在你的Fraction :: set定义中,你传入变量num和den。由于这些变量与成员变量Fraction :: num和Fraction :: den具有相同的名称,因此它们“隐藏”了成员变量。

在你的函数中,你实际上从不使用成员变量,你只使用和修改传入的变量,并且成员变量在开始之前保持未初始化为程序对它们的任何值。

对于传入set函数的变量,使用不同的名称可能会更好。

实施例

void Fraction::set(int numValue, int  denValue)
{
        // format the values that were passed in
        int i;
        for( i = numValue * denValue; i > 1; i--)
        {
                if(denValue % i == 0 && numValue % i == 0)
                {
                        denValue/=i;
                        numValue/=i;
                }
        }
        // store the values in the class
        num = numValue;
        den = denValue;
}

您可能希望了解其他问题和问题以及最佳做法,但这对CodeReview论坛来说是一个问题。