注册 登录
编程论坛 C++教室

请教C++中实现对三元一次方程的求解??

vivien薄荷芯 发布于 2012-11-13 09:52, 1983 次点击
有这么一个方程组
x+y+z=50
x+2y+5z=100
其中x>0,y>0,z>0且x、y、z都为整数。
要求输出所有可能的解。
我是新手,编程的时候直接用for循环和if语句编写的,后来出现了bad suffix on number的错误。一查才知道变量前面不能有数字。
那么,我怎么才能把这个系数和未知数编进去呢??

6 回复
#2
rjsp2012-11-13 10:48
x+2y+5z=100 减去 x+y+z=50 得到 y=50-4z;
将 y=50-4z 代入 x+2y+5z=100 得到 x=3z;

对于
x = 3z;
y = 50 - 4z;
这很简单呀
程序代码:
#include <stdio.h>

int main()
{
    for( int z=1; z<=12; ++z )
        printf( "x=%d y=%d z=%d\n", 3*z, 50-4*z, z );

    return 0;
}
不知道对不对,公式随手写的,我没验证过
#3
vivien薄荷芯2012-11-13 11:26
x=%d是什么意思啊?本人是新手,现在正自学中~~
还有就是不能用cout输出吗?
然后就是变量前不能有数字是对于什么变量而言的啊?

#4
vivien薄荷芯2012-11-13 11:26
我刚刚调试过了,是对的。
#5
newdos2012-11-13 11:42
#include <iostream>

using namespace std;

int main()
{
    int z;
    for(z = 1; z < 100; z++){
        if ( (50 -4*z) < 0 ) break;
        cout << "x=" << 3*z << " y=" << 50 - 4*z << " z=" << z << endl;
    }
    return 0;
}

因为y>0 所以 50 - 4z也必须>0,推算出z = (50 / 4) <= 12,硬要用if的话就如上所述,x 和 z 总为正整数。

二楼推论是正确的。

[ 本帖最后由 newdos 于 2012-11-13 11:45 编辑 ]
#6
额外覆盖2012-11-13 11:45
2楼用的是c语言,而cout和cin是c++里的输入输出流,需要头文件iostream
#7
vivien薄荷芯2012-11-13 14:24
非常感谢大家!
1