2

我在我的 C++ 程序中编写了以下代码,但在接近尾声时,我需要计算x1 / SumOfIntegers. 我是一个完全的初学者,我非常感谢任何可以帮助我弄清楚如何产生小数结果作为答案的人。我一直使用 2 作为我所有的整数输入,所以x1 = 2SumOfIntegers = 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条线。

要具体了解我在说什么,只需在运行之间更改一个值:

$ 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

将其从 更改6100给出了不同的值 -0.1666670.01.

于 2012-06-12T00:25:48.183 回答
0

由于除法运算符在 C++ 中的工作方式(不要问为什么,这很愚蠢,但就是这样),当每个数字都是整数时,它会觉得它很奇怪。如果您在其中一个数字的末尾实现 .0 ,它将起作用。

前任:

2.0 而不是 2

这台机器上没有安装 Visual Studio,所以我无法验证 x1 + 0.0 是否可以工作,但可以尝试一下。

最好是计算总和而不是输入它。

PS你也不需要做演员来加倍。因为它们都已经是双打了,所以你将双打转换为双打,除了浪费时钟周期之外什么也没做。只需 x1/SumOfIntegers 即可。

于 2012-06-12T00:29:34.697 回答