-3

皆さん、以下のコードで私を助けてくれるかどうか疑問に思っていました. 私のプログラムは奇妙な計算を出力しています。

#include <iostream>

using namespace std;

int main() 

{    

    int radius;
    const double PI = 3.14159265;
    float area;
    float circumference;


    cout << "Program to find the area and circumference of a circle\n\n\n";
    cout << "Please enter the radius: ";
    radius = cin.get();

    area = PI * (radius * radius);
    circumference = (2 * radius) * PI;

    cout << "The area of your circle is " << area << ", the circumference of your circle is "   << circumference <<"\n\n";
    system("PAUSE");

}
4

5 に答える 5

0

この関数は、数字ではなく文字istream::getを抽出します。ほとんどのプラットフォームでは、入力すると「5」に割り当てられます。553radius as that is the [ASCII](http://www.asciitable.com/) value of

通常の入力演算子を使用して数値を読み取ります。整数か浮動小数点変数かに>>関係なく、正しいことを行います。radius

cin >> radius;
于 2013-07-25T08:41:59.920 に答える
0

cin.get() は文字を返します。それが double に変換されると、radius が間違った値になります。次のようなストリーム変換を使用する必要があります

cin >> radius;
于 2013-07-25T08:40:54.240 に答える