函数无法正常工作,调试器没有帮助
Function isn't working properly,and the debugger isn't helping
我正在尝试编写一个程序来计算用户输入的数字的最大素因数,函数"FindFactor"计算存储在变量"Factor"中的最大因子,函数"TestFactor"测试以查看该因子有多少个因子,然后将其存储在"NFactor"中,如果"NFactor">等于0,因子是质因数,如果不是,则初始输入值替换为"因子",循环再次开始。
问题是任何给定数字的输出是输入的最大因子,而不是质因数。
经过一番修改,我已经确认问题出在"TestFactor"中,因为"FindFactor"能够正确计算最大因子,但我不知道为什么"TestFactor">总是输出0,因为这两个函数实际上是相同的。
当我尝试使用调试器时,事情变得更加奇怪(但这可能是因为这是我第一次使用它,我不知道我在做什么(:
我将断点设置为">NF">,这是"TestFactor"中包含的局部变量,以查看它的值,我收到一条消息,告诉我"标识符"i">未定义","i"是包含在"FindFactor">中的局部变量实际正常工作的函数。
然后我为"NFactor">设置了一个断点,这次我得到以下异常:">最大素因数0x00A01D9D未处理的异常.exe:0xC0000094:整数除以零。
参考如下操作:
如果 (y % j == 0(
这绝对不是这种情况,因为j=y-1。
这是完整的程序:
#include <iostream>
using namespace std;
int FindFactor(int x);
int TestFactor(int y);
int main() {
int input, Factor, NFactors,inputsave; bool prime=false;
cout << "Please enter a number" << endl;
cin >> input;
inputsave = input;
while (prime == false) {
Factor = FindFactor(input);
NFactors = TestFactor(Factor);
if (NFactors != 0) {
prime = true;
}
else {
prime = false;
input = Factor;
}
}
cout << "The largest prime factor for " << inputsave << " is " << Factor << endl;
}
int FindFactor(int x) {
int i;
for (i = x - 1; i > 1; i--) {
if (x % i == 0) {
break;
}
else {};
}
return i;
}
int TestFactor(int y) {
int j, NF = 0;
for (j = y - 1; j > 1; j--) {
if (y % j == 0) {
NF++;
}
else {};
}
return NF;
}
总结一下:
"测试因子">:输出始终为0。
主程序:输出始终是输入的最大因子,而不是质因数。
TestFactor 中有一个拼写错误,使用 j> 1 作为循环的条件。
相关文章:
- 正在VS调试器中监视映射条目
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- CoreCLR 中的检测探查器 - 将帮助程序程序集加载到 dotnet 进程的方法
- 为什么我的 VS 代码调试器在我的C++代码周围弹跳?
- 带有 GDB 调试器的 VS 代码内存视图
- 为什么调试器引发"read access violation. this was nullptr"异常?
- VS2017调试器:没有地址,可能是由于编译器优化
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 如果您在C++上有 Makefile 项目,如何在 VScode 中"fix"调试器?
- 函数无法正常工作,调试器没有帮助
- 我的调试器说我有一个隔离错误错误,但无法告诉我在哪里,在非常特殊的情况下发生
- 在内部和外部与调试器之间运行有什么区别
- 对于使用Cygwin GCC编译的C++程序,是否有免费的内存调试器
- 有没有一个调试器可以让我在代码中后退一步
- 是否有模板调试器
- Qt的调试器对分段错误有好处吗?
- 在构建时工作,但在调试器中有问题
- 使用ZeroMQ构建点对点工作负载调度器是否有帮助?
- 有没有一种方法可以从Xcode调试器的调用堆栈中删除内联函数
- 有没有轻量级的linux c++ IDE+像eclipse cdt这样的可视化调试器?