2014-07-18 76 views
0

下面给出了一个C++程序,用于找到联立线性方程中x和y的值。为什么对于这个C++程序中的相同输入,它给出了两个不同的结果

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 & Y = -1

对于由= c和PX + QY = R系统方程AX +的,
给分别的A,b,C,p,q和r的值:3 1 13 1 6 -7
X = 4 & Y = -1

现在再次我给相同的输入,但是在一个小的不同的方式

1 6-7 3 1 13 I得到X = 5 & Y = -2

方程AX +的系统通过= C和PX + QY = R,
分别得到A,B,C,P,q和r的值:1 6-7 3 1 13
X = 5 & Y = -2

正确的答案为x = 5 &ÿ = -2。

现在的问题是,我们有两个方程,我们要解决的x和y。这里用什么方法解决这些方程并不重要,因为通过任何方法,我们将分别得到x和y的值分别为5和-2。

因此,对于相同的两个方程式,为什么我得到两种不同的解决方案。

请帮助我理解我的程序中的问题。

回答

2

您正在使用int类型来存储你的变量。在第一种情况下,a为3,这会导致方程式中的分数被截断,因为int无法存储它们。

在第二个例子中,a是1,所以不会出现分数和你的程序计算出正确答案。

使用floatdouble

相关问题