类,显示我的最终结果C++时出现问题
Classes, problem displaying my final result C++
我的程序应该简化数字和 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
内部,每当你提到num
或den
时,它都是函数参数。
最后,您可能希望将这些值"保存"到成员变量中,使用 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 论坛的问题。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题