-3

2 つの勾配を計算して比較するコードがあり、それらが同じ場合は値を取得します。

ただし、1 つの勾配が定義されていない場合、プログラムはクラッシュします。未定義であっても同じかどうかを知る必要があります。他の負または正の整数を使用すると、コードが大幅に台無しになるため、使用できません。

5/0 = undefined のような単語の値を希望しますが、どうすればそれができるかわかりません。

例えば:

#include <iostream>
using namespace std;

int r = 5/0;

int main()
{
    // Instead of crashing, this should tell me this value is undefined somehow.
    cout << r << endl;
    return 0;
} 

斜面が正確に垂直である場合、どのように処理できますか?

4

2 に答える 2

0

常に定義されている方法 (角度など) で勾配を表す必要があります。プログラムに数学的な理由で結果が定義されていない別のステップがある場合は、例外を発生させることができます。

また、ベクトル x、y から角度を取得するには、atan2 http://en.cppreference.com/w/cpp/numeric/math/atan2を使用する必要があります。

 double theta = atan2(y,x) ; // this is always fine

ベクトル x1,y1 と x2,y2 で定義される 2 つの角度を比較するには、次のようにします。

double th1 = atan2(y1,x1) 
double th2 = atan2(y1,x1) 

const double mypi=3.141592653589793238463;

double angleDiff = pi - abs(abs(th1 - th2) - pi); 

if(angleDiff*10<=mypi){
    cout << " angles are within 0.1 pi (that is 18 degr) <<endl; 
}

また、浮動小数点値を比較するときは、いくつかの特殊なケースを除いて、正確に一致することを期待すべきではないことに注意してください。

于 2012-12-25T21:50:02.283 に答える