.读取实数,直到找到 10 个正值.写出 10 个正数的总和
. Read in real numbers until 10 positive values have been found. Write out the sum of the 10 positives
这是我代码的重要部分:
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。这应该提供预期的结果。
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- c++ 函数的可选写出参数
- 我可以写出小于 -0.5 两个 ulps 的常量表达式双精度吗?
- Vector::p ush_back() 给出读取访问冲突
- 我应该在C++中手动写出"sub-results"吗?
- 将指针作为参数分配给类变量,然后使用它抛出读取访问违规
- C++ 抛出读取访问冲突错误,但我不确定为什么。平铺滑块益智游戏
- 特征3:写出稀疏矩阵
- 提升流浪并写出奇怪的行为
- 如何使用递归类模板在 C++11 中写出元组的内容
- 如何写出文件并使其返回文件
- 我怎样才能写出一个快速函数来计算一个数的除数
- 从 fortran 写出二进制文件并读取 C 语言
- 将排序的数字从函数写出到文本文件
- .读取实数,直到找到 10 个正值.写出 10 个正数的总和
- 写出文件时出现奇怪的 glibc 错误
- 为银行项目计算读入/写出的问题
- 使用xcode写出二进制文件
- 如何写出像"size_t s = 16 MByte"这样的文字常量?
- 将数字数据以二进制形式写入文件,而不是写出