为什么对于这个C ++程序中的相同输入,它给出了两个不同的结果

时间:2014-07-18 08:17:18

标签: c++ validation input

下面给出了一个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。

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

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

1 个答案:

答案 0 :(得分:2)

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

在第二个示例中,a为1,因此不会出现任何分数,并且您的程序会计算出正确的答案。

使用floatdouble