【问题标题】:Why for the same input in this C++ program it is giving two different results为什么对于这个 C++ 程序中的相同输入,它会给出两个不同的结果
【发布时间】:2014-07-18 08:17:17
【问题描述】:

下面给出的是一个 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 & y=-1

那是

对于方程组 ax+by=c 和 px+qy=r,
分别给出 a,b,c,p,q 和 r 的值:3 1 13 1 6 -7
x= 4 & y= -1

现在我再次给出相同的输入,但方式略有不同

1 6 -7 3 1 13 我得到 x=5 & y=-2

那是

对于方程组 ax+by=c 和 px+qy=r,
分别给出 a,b,c,p,q 和 r 的值:1 6 -7 3 1 13
x= 5 & y= -2

正确答案是 x= 5 & y= -2。

现在的问题是,我们有两个方程,我们必须求解 x 和 y。在这里,我们通过哪种方法求解这些方程并不重要,因为通过任何方法我们都会得到 x 和 y 的值分别为 5 和 -2。

所以对于相同的两个方程,为什么我会得到两个不同的解决方案。

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

【问题讨论】:

    标签: c++ validation input


    【解决方案1】:

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

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

    使用floatdouble

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多