2

C ++プログラムで次のコードを記述しましたが、終わり近くに、の値を計算する必要がありますx1 / SumOfIntegers。私は完全な初心者です。答えとして小数の結果を出す方法を理解するのを手伝ってくれる人がいれば、本当にありがたいです。私はすべての整数入力として2を使用しているのでx1 = 2、とSumOfIntegers = 10。したがって、x1 / SumOfIntegers等しいはず.2ですが、私は出力として取得1し続けます。誰か助けてくれませんか?

#include <iostream>
#include "graphics.h"
#define     _USE_MATH_DEFINES
#include "math.h"

using namespace std;

int main()
{

    double x1;
    double x2;
    double x3;
    double x4;
    double x5;
    double SumOfIntegers;
    const double Radius = 250;
    double CircumferenceOfCircle;
    double x1PercentOfTotal;

    cout <<
        "You will be prompted to enter five integers for a pie chart \n";

    cout << "Enter integer 1: ";
    cin >> x1;

    cout << "Enter integer 2: ";
    cin >> x2;

    cout << "Enter integer 3: ";
    cin >> x3;

    cout << "Enter integer 4: ";
    cin >> x4;

    cout << "Enter integer 5: ";
    cin >> x5;

    cout << "Sum of integers: " << x1 + x2 + x3 + x4 + x5 << endl;
    cin >> SumOfIntegers;

    cout << "Circumference of Circle: " << 2 * (M_PI) * Radius << endl;
    cin >> CircumferenceOfCircle;

    cout << "x1 Percentage of Total " << (double)(x1) /
        (double)(SumOfIntegers) << endl;
    cin >> x1PercentOfTotal;

    return 0;
}
4

2 に答える 2

1

値を計算するのを忘れましたSumOfIntegers:

cout << "Sum of integers: " << x1 + x2 + x3 + x4 + x5 << endl;
cin >> SumOfIntegers;

ユーザーに合計を入力するように依頼しましたが、ユーザーはデータ入力が非常に下手であることがよくあります。自分で値を保存することをお勧めします。(また、続行する前にユーザー入力を待たないことをお勧めします。これは面倒です。)

これを試して:

SumOfIntegers = x1 + x2 + x3 + x4 + x5;
cout << "Sum of integers: " << SumOfIntegers << endl;

(特に、cin >> SumOfIntegers行を削除したことに注意してください。

私が話していることを具体的に確認するには、実行間でその 1 つの値だけを変更します。

$ echo "1 2 3 4 5 6 8" | ./foo 
You will be prompted to enter five integers for a pie chart 
Enter integer 1: Enter integer 2: Enter integer 3: Enter integer 4: Enter integer 5: Sum of integers: 15
Circumference of Circle: 1570.8
x1 Percentage of Total 0.166667
$ echo "1 2 3 4 5 100 7" | ./foo 
You will be prompted to enter five integers for a pie chart 
Enter integer 1: Enter integer 2: Enter integer 3: Enter integer 4: Enter integer 5: Sum of integers: 15
Circumference of Circle: 1570.8
x1 Percentage of Total 0.01

から に変更すると、異なる値が得6られました- vs 。1000.1666670.01

于 2012-06-12T00:25:48.183 に答える
0

C++ で除算演算子がどのように機能するかにより (理由は聞かないでください。ばかげていますが、それが何であるかはわかりません)、すべての数値が整数の場合、奇妙に扱われます。数字の 1 つの末尾に .0 を実装すると、機能します。

元:

2 ではなく 2.0

このマシンにはビジュアル スタジオがインストールされていないため、x1 + 0.0 が機能するかどうかは確認できませんが、試してみてください。

また、入力するよりも合計を計算する方が良いです。

PSダブルキャストを行う必要もありません。それらはすべて double であるため、double を double にキャストしても、何も達成されず、クロック サイクルが浪費されます。x1/SumOfIntegers だけが機能します。

于 2012-06-12T00:29:34.697 に答える