我正在为我正在上的 C++ 类(class)设计程序,教授希望我们编写一个程序,使用“*”输出菱形。我坚持的事情是我的程序输出了太多行。
代替
*
***
*
正在输出
*
***
*****
***
*
我该如何修改我的代码才能使其正常工作?我整个上午都在网上搜索答案,但没有成功。
这是我的代码:
#include <iostream>
using namespace std;
int main () {
//Define Varaible
int N;
cout << "Please enter a postitive integer: ";
cin >> N;
cout << "Here is your diamond." << endl << endl;
for (int i = 0; i <= 2 * N; i++) {
for (int j = 0; j <= 2 * N; j++) {
if (i <= N) {
if (j < N - i || j > N + i) {
cout << ' ';
}
else {
cout << '*';
}
}
else {
if (j < i - N || j > 3 * N - i) {
cout << ' ';
}
else {
cout << '*';
}
}
}
cout << endl;
}
return 0;
}
最佳答案
您获得的行比您预期的多的原因是您创建了 2 * N + 1
行,而您实际上需要 2 * N - 1
。
修复很简单:在读取输入后将 N
减一。
cin >> N;
assert(N > 0);
--N;
这样,您的其余代码就不必更改。
关于c++ - 为什么我的循环执行得太频繁了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524499/