Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.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++中使用嵌套for循环的更复杂的形状_C++_Loops_For Loop_Nested Loops_Shapes - Fatal编程技术网

在C++中使用嵌套for循环的更复杂的形状

在C++中使用嵌套for循环的更复杂的形状,c++,loops,for-loop,nested-loops,shapes,C++,Loops,For Loop,Nested Loops,Shapes,我见过一些他们制作X、三角形或钻石等简单示例的地方。我想知道如何制作这样的复杂形状: # # ## ## ### ### #### #### ########### ########### #### #### ### ### ## ## # # 我对编程非常陌生,不知道代码本身的基本功能 一个简单

我见过一些他们制作X、三角形或钻石等简单示例的地方。我想知道如何制作这样的复杂形状:

#                 #
 ##             ##
  ###         ###
   ####     ####
    ###########
    ###########
   ####     ####
  ###         ###
 ##             ##
#                 #
我对编程非常陌生,不知道代码本身的基本功能


一个简单的方法是使用光线跟踪方法;i、 e

for (int y=0; y<rows; y++) {
    for (int x=0; x<cols; x++) {
        if (func(x, y)) {
            std::cout << "#";
        } else {
            std::cout << " ";
        }
    }
    std::cout << "\n";
}

你会得到一个圆

许多绘制类似你的形状的任务都是基于对称性的,包括水平方向和垂直方向。例如,在水平方向上,从左到中的字符镜像在中心点之后

绘制形状的老式方法是将形状存储在二维数组中,然后打印出数组:

unsigned char letter_E[7][5] =
{
  {'*', '*', '*', '*', '*'},
  {'*', ' ', ' ', ' ', ' '},
  {'*', ' ', ' ', ' ', ' '},
  {'*', '*', '*', '*', '*'},
  {'*', ' ', ' ', ' ', ' '},
  {'*', ' ', ' ', ' ', ' '},
  {'*', '*', '*', '*', '*'},
};

for (unsigned int row = 0; row < 7; ++row)
{
  for (unsigned int column = 0; column < 5; ++column)
  {
    std::cout << letter_E[row][column];
  }
  std::cout << '\n';
}

另外,在互联网上搜索ASCII艺术。

创建这种形状有两个方面——提出一种逻辑并用编程语言对该逻辑进行编码。您在哪方面遇到问题?例如:。这是对@juanchopanza的评论,这是欺骗:@juanchopanza主要是解决问题的策略,我在语法或任何方面都没有问题,只是如何以逻辑的方式处理问题的问题在修复了一个关键的新行错误之后,你的圈兄弟来了
bool func(int x, int y) {
    return (x-10)*(x-10) + (y-10)*(y-10) < 8*8;
}
unsigned char letter_E[7][5] =
{
  {'*', '*', '*', '*', '*'},
  {'*', ' ', ' ', ' ', ' '},
  {'*', ' ', ' ', ' ', ' '},
  {'*', '*', '*', '*', '*'},
  {'*', ' ', ' ', ' ', ' '},
  {'*', ' ', ' ', ' ', ' '},
  {'*', '*', '*', '*', '*'},
};

for (unsigned int row = 0; row < 7; ++row)
{
  for (unsigned int column = 0; column < 5; ++column)
  {
    std::cout << letter_E[row][column];
  }
  std::cout << '\n';
}