负面因素并未增加

时间:2013-05-02 00:06:25

标签: c++ visual-studio-2012

代码在这里

#include "stdafx.h"
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int main ()
{
    cout << 1 + -4 << "\n";
    signed int x1; //(x1, ...
    signed int y1; //(x1, y1)...
    signed int x2; //... (x2, ...
    signed int y2; // ... (x2, y2)
    signed int ans1;
    signed int ans2;
    signed int ans3;
    signed int result;
    cout << "X1: ";
    cin >> x1;
    cout << "\nY1: ";
    cin >> y1;
    cout << "\nX2: ";
    cin >> x2;
    cout << "\nY2: ";
    cin >> y2;
    cout << "\n(" << x1 << ", " << y1 << "), (" << x2 << ", " << y2 << ")\n";
    result = (x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1);
    cout << "X2 - X1 = " << x2 - x1 << "\n";
    cout << "Y2 - Y1 = " << y2 - y1 << "\n";
    ans1 = x2 - x1;
    ans2 = y2 - y1;
    ans3 = ans1 + ans2;
    cout << ans1 << " + " << ans2 << " = " << ans3;
    cout << result << "\n";
    return 0;
}

我一直试图为一个简单的方程式求解器。用简单的术语来说,它是(x2 - x1)(平方)+(y2 - y1)(平方) - 就像那些不同的数字一样 - 思考坐标。 (4,3),(6,2)

问题是,作为一个例子,当我输入8,6,9,2(原来是(8,6),(9,2)时,它会得出错误的答案,而不是我解决它时在纸面上。我继续前进并使它成为&lt;&lt;&lt;步骤顺序,它说1 + -4是-317。我很困惑,因为这远不是正确答案,当然。那么什么是错了?当我从开头整数中删除签名时,它确实会中断。

我正在使用运行Windows 8的Visual Studio Express 2012。

2 个答案:

答案 0 :(得分:4)

所以我看到你做同样的事情:http://ideone.com/jaGeXx

  

1 + -4 = -317

是由代码中的这些两个行创建的:

cout << ans1 << " + " << ans2 << " = " << ans3;
cout << result << "\n";

第一个生成

  

1 + -1 = -3

第二个生成

  

17

你没有要求任何分隔换行符或空格。所以你的程序很乐意将它们发送到彼此相邻的屏幕。

答案 1 :(得分:3)

-3是-3。

( - 1) - 平方加4平方为17。

确保在-3到17之间打印换行符。