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

Classes, problem displaying my final result C++

本文关键字:C++ 问题 结果 显示 我的      更新时间:2023-10-16

我的程序应该简化数字和 denom。但是我必须使用一个类,并使用一个显示函数来显示我的最终结果,但每次我都显示它。它给了我 82 的 num 和 21305...对于书房。就像它没有从分数::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;
}

Fraction::set内部,每当你提到numden时,它都是函数参数。

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

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

这不是真正的消歧义,但你知道。

在 Fraction::set 的定义中,你传入了变量 num 和 den。由于这些变量与成员变量 Fraction::num 和 Fraction::d en 同名,因此它们"隐藏"了成员变量。

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

传递给 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 论坛的问题。