2016-09-08 7 views
2
//findSlope(twoPoints).exe 
//finding the slope of line AB, using coordiantes of point A and B. 

#include <iostream> 

int main() 
{ 
    int a, b, c, d; 
    float answer; 

    std::cout << "The X coordiante of A: "; 
    std::cin >> a; 
    std::cout << "\nThe Y coordiante of A: "; 
    std::cin >> b; 
    std::cout << "\nThe X coordiante of B: "; 
    std::cin >> c; 
    std::cout << "\nThe Y coordiante of B: "; 
    std::cin >> d; 
    std::cout << "\nThe slope of line AB = " << std::endl; 

    answer = (b-d)/(a-c); 

    std::cout.setf(std::ios::fixed); 
    std::cout.precision(3); 

    std::cout << answer << std::endl; 
    //alternative= std::cout << fixed << setprecision(#) << answer << std::endl; 

    std::cout.unsetf(std::ios::fixed); 

    return 0; 
} 

私はC++を学習しており、2点の座標を使って勾配を計算するプログラムをコーディングしようとしました。intとoutput floatを使用して計算しますか?

座標を宣言した変数にfloatを使用すると、計算結果は小数点付きでfloatと出力されます。しかし、ユーザー入力にまだintを使用できるかどうかは疑問です。そのため、入力が整数であることを保証できます。

追加質問:floatを「#。##」の形式で「##/#」に変換することは可能でしょうか?私たちは数学のやり方にもっと似ています。

+3

キャストについて学ぶ必要があります。 –

+0

小数点以下の小数点以下は欲しいですか? – Hayt

+0

http://en.cppreference。com/w/cpp/language/static_cast – Matt

答えて

2

あなたが二重にimplicit conversionを使用することができます。

answer = (b-d)/(a-c*1.0); 

またはexplicit cast

answer = (b-d)/(a-(float)c); 

ボーナス:

+2

'1.0'は暗黙の変換やキャストではなく、' double'型のリテラルです。どちらの例も暗黙的な変換のために動作しますが、これはさまざまな理由で発生します。 – Peter

-1

あなたは、ユーザの入力をintを使用できますが、正確に除算演算子/が含まれているものを計算するには、浮動小数点型にキャストする必要があります。

static_castを使用することをお勧めします(Cスタイル(float)の構文を使用することはできますが)。例えば

ここ
answer = static_cast<float>(b - d)/(a - c); 

は、floatもたらす整数で割り次いでfloat(b - d)を変換します。以下が正常に動作しないこと

注:

answer = static_cast<float>((b - d)/(a - c)); 

理由はfloatにint型に変換結果、あなたが最初デバイド別intによってintということです。

PS float本当に不正確であるので、私はあなたが(私はそれがだろうかわからないにもかかわらず、数学的な正確さに依存しない高速なコードを書きたい場合を除いて、すべてのケースでdoubleの代わりfloatを使用するように助言します現代のプロセッサでは高速)、またはその機能の一部にfloatを使用する既存のライブラリとの互換性を維持することができます。

+0

* floatは本当に間違っています* => ?? –

+1

最初の例では、整数による除算はありません。 'a-c'という表現の結果は、除算を行う前に' float'に変換されます。そしてどこでも 'double'を使うのは本当に貧弱なアドバイスです。 – Peter

関連する問題