c++ - 在 C++ 中使用嵌套循环求解一阶联立方程

标签 c++ nested-loops

我有一个问题需要我编写一个程序来为一对 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/

相关文章:

c++ - 重载 << 并出现重复符号链接(symbolic link)错误

C++ Visual Studio : Uninitialized local variable 'response' used

c - OpenMP 嵌套循环,代码在做什么?

java - Geotools 在 SimpleFeatureCollection 上嵌套循环

ios - swift 中的嵌套重复循环

c# - 最佳实践 : Nested ForEach

c++ - 如何在 C++ 中创建 'char *[]'?

c++ - 删除正向链表

c++ - 如何在现代 C++ 中将列附加到二维 vector

matlab - 在 Matlab 中向量化 4 个嵌套 for 循环