Я видел некоторых, где они делают простые примеры X или треугольников или алмазов и т. Д. Я хотел бы знать, как сделать сложную форму, как это:
# #
## ##
### ###
#### ####
###########
###########
#### ####
### ###
## ##
# #
Я чрезвычайно новичок в программировании, не знаю основных функций самого кода.
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
int spaces = 4;
int hashes = 1;
for(int row=0;row<10;row++)
{
for(int spaces=0;spaces<4;spaces++)
{
cout<<" ";
}
for(int hashes=0;hashes<1;hashes++)
{
cout<<"#";
}
cout<<endl;
if(row<5&&row>6)
{
spaces--;
hashes+=2;
}
else
{
spaces++;
hashes-=2;
}
}
return 0;
}
Простой способ — использовать подход «трассировки лучей»; то есть
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";
}
например с rows = cols = 20
а также func
определяется как
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';
}
Кроме того, поиск в Интернете для «ASCII art».