即使我设置了限制,我的 for 语句也会不断重复
My for statement keeps repeating even though I set a limit?
即使我设置了限制,我的 for 语句也会不断重复?(对不起,我是全新的)我不知道如何防止它永远重复。即使不满足我设置的条件,它也会关闭,这应该发生吗?
// Garbage Collection
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double reg, glass, met;
double total;
double reg_ratio, glass_ratio, met_ratio;
cin >> reg;
cin >> glass;
cin >> met;
total = met + glass + reg;
cout << "The total number of bags is " << total << endl;
met_ratio = met / total;
reg_ratio = reg / total;
glass_ratio = glass / total;
cout << "The metal ratio is " << met_ratio << endl;
cout << "The glass ratio is " << glass_ratio << endl;
cout << "The regular ratio is " << reg_ratio << endl;
if (met==reg==glass) {
cout << "All garbage amounts are the same." << endl;
}
else if (reg > glass && met) {
cout << "Regular is the largest." << endl;
}
else if (glass > met && reg) {
cout << "Glass is the largest." << endl;
}
else if (met> glass && reg) {
cout << "Metal is the largest." << endl;
}
for (reg >= 50; reg+reg;) {
cout << "I can't take anymore." << endl;
}
return 0;
}
for
的工作方式。它:
for (initial statement; condition; iteration operation)
initial statement
执行一次,在循环中的第一个条目上,只要condition
为 true,循环就会执行,并且操作在每次迭代时执行。
在您的情况下,初始语句是 reg >= 50
,它什么也不做,条件是reg+reg
,只有当reg+reg
以某种方式评估为 false
并且没有操作时,条件才会为 false。
reg+reg
不会修改reg
请注意。您正在寻找的操作可能reg += reg
。
for(initialization; condition; increment-code)
是for循环的工作方式(注意:所有三个部分都是可选的)。如果condition
true
,则继续循环。你把它混在一起,写成for(condition; increment-code; *empty*)
.请注意,您的状况似乎相反。此外,您的递增部分实际上并没有更新reg
,您将其添加到自身并丢弃结果。
正确的代码是
for(; reg <= 50; reg += reg)
另请注意,您的if
陈述似乎非常虚假。
if (reg> glass && met)
首先,请在二进制操作周围放置一个空格。接下来,这将仅测试IFT大于glass
reg
以及met
是否为非零值。要测试reg
是否大于glass
又大于met
,您必须明确执行此操作两次:
if(reg > glass && reg > met)
我可以推荐一本好书吗?
其他用户报告的内容是正确的:您编写的for
语句永远不会结束,也不会更改任何变量。Xeo给了你写for
语句的正确方法。
我要补充的是,for
循环应该包含条件为真时需要执行的指令。在您的情况下,您正在执行的指令似乎适用于条件不再为真的情况。如果只想在变量大于值时编写消息,则应使用 if
语句。
if (reg >= 50) {
cout << "I can't take more." << endl;
}
- 为什么在 C/C++ 中交织 switch/for/if 语句是有效的?
- C++ 访问 if 语句(如果它们在 for 循环中)
- 试图避免在 for 循环中出现 if-else 语句,但代码似乎有一些错误
- 如何在 FOR 语句中间阻止 Visual Studio 2017 c++ 自动完成)?
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- C++:关于for语句和参数的一般问题
- 这个基于范围的'for'语句需要一个合适的函数,但找不到任何函数
- C++ 使用 OpenMP 时,如果 for 循环在 if else 语句中出错
- 如何退出 for 循环内的嵌套 if-else 语句?(C/C++)
- 我的 break 语句没有中断 for 循环
- for 循环后的分号是什么意思?为什么第一个循环语句中有 j++
- R6010 执行后出错.if 语句在 for 循环中.[作业][中止已解决,发现新问题]
- python 和 c++ 的结果对于嵌套的 for 语句是不同的
- if 语句在 for 循环中不起作用
- 我的 for 循环之后的代码不起作用,for 循环后的打印语句不会被打印
- 并排使用 for 循环和 if 语句C++
- 在 c++ 中创建递归 for 语句
- 仅在向量末尾打印新行 - "if"语句在"for"循环之外
- 编译器是否优化了语句"for"第二个条件?
- C++ for-each 语句触发"vector iterators incompatible"断言失败:this->_Getcont() == 0