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

这个二元方程怎么做啊!

clavsummer 发布于 2008-04-09 23:17, 1748 次点击
x+y=10
x-y=2
求x,y
谢谢啊!
15 回复
#2
sunkaidong2008-04-09 23:19
循环做
#3
leeco2008-04-10 12:52
x=6;y=4
一看就看出来了。
#4
kedt52002008-04-10 22:40
先确定X,Y的取值范围,用两个循环枚举x,y的植,直到满足条件!
#5
VanHorn2008-04-11 09:42
用行列式解,是通解。
#6
安徽U阿朱2008-04-11 11:05
回复 3# 的帖子
你好幽默!
#7
flylee2008-04-11 11:53
行列式吧,比较机械,容易实现
#8
caoaihua32008-04-11 13:01
AX=B
X=(A逆)*B
#9
张信哲2008-04-11 20:51
不会。我的程序
#include<iostream>
using namespace std;
int main()
{
    int x,y;
    while(x&&y)
    {
        x+y=10;
        x-y=2;
    }
    printf("%d,%d",x,y);
    return 0;
}
错误信息:--------------Configuration: dddddd - Win32 Debug--------------------
Compiling...
c.cpp
E:\MyProjects\dddddd\c.cpp(8) : error C2106: '=' : left operand must be l-value
E:\MyProjects\dddddd\c.cpp(9) : error C2106: '=' : left operand must be l-value
执行 cl.exe 时出错.
#10
yjcf2008-04-11 22:04
计算代码如下:
#include "stdio.h"
void main()
{
int x,y;
for(x=1;x<=10;x++)
 for(y=1;y<=10;y++)
  {if(x+y==10&&x-y==2)
    printf("x=%d,y=%d",x,y);
  }
}
#11
yjcf2008-04-11 22:07
回复 9# 的帖子
你的“=”出错误了 “=”时付值语句 而该式需要的是等号,应为“==”
#12
张信哲2008-04-12 17:09
10#中,你为什么可以确定for的两个循环在10以内呢?大一点的方程组呢
#13
houenxun2008-04-13 10:42
楼上的使用的是搜索的算法,也可以用函数逼近的思想:
 #include<iostream>
#difine NUM_MAX 1000
using namespace std;

void main()
{
    int x,y;
    int init,num=0;
    cin>>init;//叠代的次数与初值的选取有关
    x=init;
    while((x+y!=10||x-y!=2)&&num<NUM_MAX)
{
y=10-x;
x=y+2;
num++;
}
cout<<x<<y<<endl;
}

 对于更复杂的方程同样有效
#14
flylee2008-04-13 13:26
程序代码:

#include <iostream>
using namespace std;

/*
x1*x+y1*y=c1
x2*x+y2*y=c2
*/

int main()
{
    int x1, x2, y1, y2, c1, c2;
    cin>>x1>>y1>>c1;
    cin>>x2>>y2>>c2;
    int m=x1*y2-x2*y1;
    int x=(c1*y2-c2*y1)/m;
    int y=(x1*c2-x2*c1)/m;
    cout<<x<<' '<<y<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

没有进行根的存在性验证,可以自己添加
还可以用两个整形把结果表示成分数
对于多元方程也可以进行扩展
#15
野比2008-04-13 13:26
13楼的方法不错
#16
sunkaidong2008-04-13 13:52
13楼程序有问题...
1