下面给出了一个C ++程序,用于在联立线性方程中找到x和y的值。
using namespace std;
#include<iostream>
int main()
{
int m,n,a,b,c,p,q,r,x,y;
cout<<"For the system of equation ax+by=c and px+qy=r,";
cout<<"\nGive the value of a,b,c,p,q and r respectively:";
cin>>a>>b>>c>>p>>q>>r;
m=q-((p*b)/a);
n=r-((p*c)/a);
if(q==0)
cout<<"No solution";
else
y=(n/m);
x=(c-(b*y))/a;
cout<<"x= "<<x<<" & y= "<<y<<"\n";
return 0;
}
这个程序的问题是当我输入
时3 1 13 1 6 -7我得到x = 4&amp; y = -1
那是
对于方程ax + by = c和px + qy = r,
的系统 分别给出a,b,c,p,q和r的值:3 1 13 1 6 -7
x = 4&amp; y = -1
现在我再次给出相同的输入但是以一种不同的方式
1 6 -7 3 1 13我得到x = 5&amp; y = -2
那是
对于方程ax + by = c和px + qy = r,
的系统 分别给出a,b,c,p,q和r的值:1 6 -7 3 1 13
x = 5&amp; y = -2
正确的答案是x = 5&amp; y = -2。
现在的问题是,我们有两个方程式,我们必须求解x和y。在这里,通过哪种方法解决这些方程无关紧要,因为通过任何方法,我们将得到x和y的值分别为5和-2。
因此对于相同的两个方程式,为什么我得到两种不同的解决方案。
请帮助我理解程序中的问题。
答案 0 :(得分:2)
您使用int
类型来存储变量。在第一种情况下,a
为3,这会导致等式中的分数被截断,因为int
无法存储它们。
在第二个示例中,a
为1,因此不会出现任何分数,并且您的程序会计算出正确的答案。
使用float
或double
。