我有一个问题需要我编写一个程序来为一对 1 阶联立方程找到解。我必须详尽地测试 x 和 y 的所有值才能找到整数解。两个方程的系数 A、B 和 C 都在名为“input.txt”的数据文本文件中。
文本文件包含以下数据:
1 0 99
0 2 -100
下面是我的程序:
#include <stdio.h>;
#define FILENAME "input.txt"
int main() {
int A, B, C, x, y;
FILE *input;
input = fopen(FILENAME,"r");
fscanf(input,"%d%d%d", &A,&B,&C);
for(x = -100; x <= 100; x++)
for(y = -100; y <= 100; y++)
if(A*x+B*y==C){
fscanf(input,"%d%d%d", &A,&B,&C);
if(A*x+B*y==C)
printf("X=%d, Y=%d\n", x, y);
}
return 0;
}
当我编译并运行程序时,我得到
X=99, Y=-50
X=100, Y=-50
很明显,程序有一些错误。这些是什么?
另外,如果我只想打印一次消息,说在 [-100, 100]
范围内找不到解决方案,我应该如何将这个 printf 函数插入到程序中?
最佳答案
自从我完成 c 风格的文件 I/O 以来已经有一段时间了,但是我很快注意到了一些明显的错误:
- 您应该验证文件是否已打开
- 您应该验证 fscanf 每次读取预期的项目数
- 您可能需要在 %d 格式说明符之间有空格(不确定这个)
- 不应将第二组参数读入与第一组相同的变量
- 你应该只读取一次第二组参数(不是在循环中有条件地读取)
另外,为什么你需要使用嵌套循环?有更好的方法来解决这个问题。
编辑:所提供的输出是否来自示例代码? Y如何得到-50的值?
关于c++ - 在 C++ 中使用嵌套循环求解一阶联立方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949395/