.读取实数,直到找到 10 个正值.写出 10 个正数的总和

. Read in real numbers until 10 positive values have been found. Write out the sum of the 10 positives

本文关键字:写出 读取 实数      更新时间:2023-10-16

这是我代码的重要部分:

int realnum, positive = 0, total, poscount;
for (poscount = 1; poscount < 11; poscount++)
{
    cin >> realnum;
    while (realnum > 0)
    {
        total = realnum + positive;
    }
}
cout << "Total of 10 positive values is " << total << endl;

我真的只是看不出这里有什么问题。声明我的整数后,程序进入我的 for,将 poscount 增加到 2,要求我输入 realnum。我输入一个正数(例如:6),理论上应该将我的领域与正数(我声明为 0)相加,并给出总值(例如:6 + 0 = 6)。它应该继续循环,直到 poscount 达到 11 并输出总共 10 个正数。

当我运行它时,我输入 6,命令提示符只显示 6,没有任何反应,我必须通过 x 按钮关闭。有人可以告诉我错误是什么吗?

我只会在外循环中使用while来保持到目前为止正数的数量。此外,您的total未初始化,您为其分配positive,这只是 0?

这就是我的想法:

int realnum, total = 0, poscount = 0;
while (poscount < 10) {
    cin >> realnum;
    if (realnum > 0)
    {
        total += realnum;
        poscount++;
    }
}
cout << "Total of 10 positive values is " << total << endl;

if替换您的while,因为目前,一旦您进入该while循环,您将永远不会退出它。

另外,你为什么总是增加poscount?难道你不应该只在realnum是积极的时才这样做吗?for循环中的迭代语句允许为空;然后,您将poscount++写入新的if块中。

您还需要写入total +=增加总量。

如果使用调试器,则很容易发现这些内容。

好的,所以我想我已经纠正了自己(没有公然复制模糊,但也使用拔示巴的提示来替换我的while。

int realnum = 1, positive = 0, total, poscount;
if (realnum > 0)
{
    for (poscount = 1; poscount < 11; poscount++)
    {
        cin >> realnum;
        total = realnum + positive;
        positive = total;
    }
}
cout << "Total of 10 positive values is " << total << endl;
到目前为止,它

似乎有效,可能有很多不必要的事情使它效率低下,但我不想复制示例。 *编辑当然我仍然需要忽略负面部分

我想我把自己逼到了不归路,哈。我真的以为还有另一种方式我要走...无论如何,感谢您的回复,伙计们。我一直潜伏在这里,直到我现在做了一个帐户。

添加一个条件来终止 while 循环。与其为realnum添加正数,不如尝试添加poscount。这应该提供预期的结果。