Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何制作沙漏图案?_C++ - Fatal编程技术网

C++ 如何制作沙漏图案?

C++ 如何制作沙漏图案?,c++,C++,我想做一个沙漏,但我不能得到沙漏的正确代码。我做错了什么?这是原始代码的较短版本 #include <iostream> using std::cin; using std::cout; using std::endl; int main() { int number; cin >> number; //Hourglass for (i = number; i > 0; i--) { cout << en

我想做一个沙漏,但我不能得到沙漏的正确代码。我做错了什么?这是原始代码的较短版本

#include <iostream>

using std::cin; using std::cout; using std::endl;

int main()
{
    int number;
    cin >> number;

//Hourglass

   for (i = number; i > 0; i--)
   {
       cout << endl;
       for (int j = number; i < j; j--)
       {
           cout << " ";
       }
       for (int j = 0; i > j; j++)
       {
           cout << "*";
       }
       for (int j = 0; i > j; j++)
       {
           cout << "*";
       }
   }
   for (int i = 0; i < number; i++)
   {
       for (int j = 0; j < (number - (i + 1)); j++)
       {
           cout << " ";
       }
       for (int j = 0; j < (2 * i + 1); j++)
       {
           cout << "*";
       }
       for (int j = 0; j < (number - (i + 1)); j++)
       {
           cout << " ";
       }
       cout << endl;
   }
}

问题在您的第一个for循环中。你需要做的是移动

cout << endl; 

下面的代码将在屏幕上打印沙漏*图案。可变大小是要打印的沙漏的高度。使用g++编译器编译代码

#include <iostream>

int main() {

  int row, col;
  int size;
  int diagA, diagB;

  std::cout << "Enter height of the hourglass ";
  std::cin >> size;

  for ( row=0; row<size; row++ ) {
    for ( col=0; col<size; col++ ) {

      diagA = row;
      diagB = size-row-1;

      if ( diagA <= diagB ){
        if ( col >= diagA && col <= diagB )
          std::cout << "*";
        else
          std::cout << " "; 
      }
      else {
        if (  col >= diagB && col <= diagA  )
          std::cout << "*";
        else
          std::cout << " ";
      }
    }
    std::cout << std::endl;
  }

  std::cout << std::endl;

  return 0;
}

当然,你需要沙子和玻璃来制作沙漏——或者我误解了对问题的描述——好吧,我不得不承认这是一个很好的笑话。我想做的是用星号制作一个小时玻璃杯。但是你为什么要在网站上发布作业呢?我不是想作弊或其他什么。我只是把代码的最后一个错误修复了。我还意识到我把沙漏的设计搞砸了。另外,在你的后半个小时里,第三个for循环是不必要的。它是在沙漏的右侧添加空间,您可以将其作为空白保留,并获得相同的结果。它将使您的程序更有效,做得更少!
**********
 ********
  ******
   ****
    **
    **    
   ****   
  ******  
 ******** 
**********
#include <iostream>

int main() {

  int row, col;
  int size;
  int diagA, diagB;

  std::cout << "Enter height of the hourglass ";
  std::cin >> size;

  for ( row=0; row<size; row++ ) {
    for ( col=0; col<size; col++ ) {

      diagA = row;
      diagB = size-row-1;

      if ( diagA <= diagB ){
        if ( col >= diagA && col <= diagB )
          std::cout << "*";
        else
          std::cout << " "; 
      }
      else {
        if (  col >= diagB && col <= diagA  )
          std::cout << "*";
        else
          std::cout << " ";
      }
    }
    std::cout << std::endl;
  }

  std::cout << std::endl;

  return 0;
}