c++ - 为什么我的循环执行得太频繁了?

标签 c++ loops while-loop

我正在为我正在上的 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/

相关文章:

c++ - 在 C++ 中初始化静态成员

javascript - 为什么 jQuery inArray 太慢了?

c - 使用循环来知道“对象在 c 中何时过去

ios - 在 for-in 循环中更改数组的名称

javascript - 如何重复 123 1231 直到长度目标

javascript - 嵌套在 WHILE 循环中的 IF 语句的结果让我感到困惑(Javascript)

c++ - 更好的多函数调用设计

C++线程 - 并行处理

c# - 不能声明局部变量名称 'choice',因为它会给 'choice' 不同的含义

无法识别 C++ 文字运算符模板