2016-12-19 7 views
-3

基本的には、入力する任意の数値を四角形にする必要があります。なぜこれは機能しませんか?C++スクリプトに何が問題なのですか?

私はコンパイルしますが、入力が平方ではありません。

#include <iostream> 

using namespace std; 

float SquareNumber; 
float Squared = SquareNumber * SquareNumber; 



int main() 
{ 

    cout << "Please enter a number to be squared: "; 
    cin >> SquareNumber; 

    cout << SquareNumber << " squared is " << Squared; 


    system("pause"); 
    return 0; 
}; 
+2

、そもそもそれを試してみてください: 'SquareNumber = SquareNumber * SquareNumber;' – Aidin

+2

は、スタックオーバーフローへようこそ!これまでに試したことについてもう少し詳しく教えてください。どの入力を実行していて、どの出力が表示されていますか?エラーが何であるか把握しようと、これまで何をしていますか?あなたは何か推測していますか?もしそうなら、なぜですか? – templatetypedef

+1

@Aidinは操作があることを確かめます。静的な初期化中に発生します。 – Flexo

答えて

4

私はコンパイルが、それは私の入力を二乗しません。

数字を入力した後に四角形を計算する必要があります。 Squaredが計算されるとき、SquaredNumberの値は0.0です。したがって、Squaredの値も0.0です。

float Squared = SquareNumber * SquareNumber; 

その時点でSquaredNumberの値を用いてSquaredの値を設定します。 の値がSquaredNumberの値を変更した場合、Squareの値を更新しません。その効果を得るには、関数を使う必要があります。

#include <iostream> 

using namespace std; 

float SquareNumber; 

float Squared(float in) 
{ 
    return in * in; 
} 

int main() 
{ 
    cout << "Please enter a number to be squared: "; 
    cin >> SquareNumber; 

    cout << SquareNumber << " squared is " << Squared(SquareNumber); 

    return 0; 
}; 
+0

なぜあなたは機能とステートメントを必要としますか? –

+0

私は、単純なステートメントには常に関数を優先します。文は抽象化をキャプチャしますが、文はその抽象化の実装の詳細を単にキャプチャします。 –

0

問題は、正方形を正しく計算していないことです。 「run time」ではなく、「compile time」と表示されます。

コードをこれに変更しますが、理由を理解していないかどうかを確認してください(ヒント:数字が何であるかを知る前に、数字の2乗を計算するにはヒントを教えてください)。あなたは、入力上の任意の操作を行っていない

#include <iostream> 

using namespace std; 


int main() 
{ 
    float SquareNumber; 
    float Squared; 

    cout << "Please enter a number to be squared: "; 
    cin >> SquareNumber; 

    Squared = SquareNumber * SquareNumber; // calculate at *run time* 

    cout << SquareNumber << " squared is " << Squared; 


    system("pause"); 
    return 0; 
}; 
関連する問題