【发布时间】:2017-09-22 14:42:41
【问题描述】:
代码:
#include <iostream>
#include <vector>
int main () {
std::cout << "Please, enter the number of iterations: "; //Inputs
int iterations;
std::cin >> iterations;
std::cout << "Which term would you like to know: ";
int term;
std::cin >> term; //End inputs
std::vector<int> series; //definition of vector "series"
for (int n = 1; n <= iterations; n++) { //creation of "series"
int next = (2 * n - 3);
series.push_back(next);
}
std::cout << "The value of term " //prints the n term
<< term
<< " is: "
<< series[term-1] //term-1 "adjust" the indexing
<< std::endl;
std::cout << "The entire serie up to "
<< iterations
<< " terms is: ";
for (int i = 0; i < series.size(); i++) { //prints (elements of vector) "series"
std::cout << series[i] << ' ';
if (i == series.size()-1) { //new line only at the end the series
std::cout << std::endl;
}
}
return 0;
}
我得到了 9/10 的评论:“如果循环内的条件只会满足一次,但每次都会检查。移出循环”。 我真的不知道如何将 if 语句置于循环之外。 该 for-if 语句的范围是仅在向量“系列”的末尾添加一个新行。 我无法考虑其他任何事情,但可以肯定的是我有足够的经验并且还有另一个更优雅的解决方案。 我在这里问是因为我必须提交另一个作业,我不想提交同样的错误。
PS:另一条评论是:轻度过度评论。我真的评论太多了吗?
【问题讨论】:
-
你根本不需要那个
if。例如return 0“仅在系列结束时”发生。 -
if块仅在迭代的 end 时检查,唯一的进入条件是您是否正在为 last 元素提供服务.这在语义上与 not 完全具有if块相同 - 并将内容移动到循环之后立即(例如,在for之后无条件调用std::cout << std::endl而不是有条件地检查最后一个元素每次迭代。) -
是的,您正在添加毫无意义的 cmets,例如:
std::vector<int> series; //definition of vector "series"对于任何编写 C++ 代码的人来说都是显而易见的 -
要添加到评论内容...您还可以编写自我评论代码...所以要创建您的系列或打印您的系列,您可以创建名为
seriesCreation、printSeries的函数, 或initializeSeries这将有助于一些毫无意义的 cmets 并且仍然解释你在做什么。具有有意义变量名称的可读代码比明显的 cmets 要好得多。
标签: c++ loops for-loop if-statement vector