Я работаю над проектом кодирования, в котором мы рисуем различные формы, используя звездочки. Я до сих пор рисовал X, прямоугольник и верхнюю и нижнюю части квадрата. В последнем проекте мы рисуем круг, и тот же метод, который я использовал для 4 предыдущих проектов, - создавая разновидность сетки, используя вложенные и если еще петли, и указывая, где рисовать "" или " * "не хватает. Вот мой код:Рисование круга на C++, но рисование алмаза вместо
int main() {
int rad; // int for radius
cout << "We are creating a circle made of asterisks. Please input the radius: " << endl;
cin >> rad;
int i;
int t;
for(i = 1 ; i <= (rad * 2) + 1; i++)
{
for(t = 1; t <= (rad * 2) + 1 ; t++)
{
if((i == 1 && t == rad + 1) /*|| (i == (rad * 2) && t == rad + 1) || (i == rad/2 && t == rad/2)*/)
{
cout << "*";
}
else if (i >= 2 && i <= rad && t == (rad+1) - (i-1))
{
cout << "*";
}
else if (i >= 2 && i <= rad && t == (rad+1) + (i-1))
{
cout << "*";
}
else if (i >= rad && t == (i - rad))
{
cout << "*";
}
else if (i >= rad && t == (rad * 2) + 2 - (i - rad))
{
cout << "*";
}
else
{
cout << " ";
}
}
cout<< endl;
}
return 0;
}
Вывод данных выше? Совершенный алмаз:
We are creating a circle made of asterisks. Please input the radius: 5
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
Очевидно, что мой метод не работает. Я попытался настроить мои параметры, чтобы увеличить расстояние между звездочками, создав некое приблизительное приближение круга, но это выглядит не так. Я не могу не думать, что должен быть элегантный, превосходный способ сделать это. Может быть, более математический подход, который использует радиус. Любые предложения или советы?
Как вы можете нарисовать круг без использования геометрии? – stark
Что делает точки круга ... круга, это: ** (x-cx)^2 + (y-cy)^2 = r^2 **. У вас есть неоправданное количество условий. –
Вы можете это проверить: [Посетите это] (http://stackoverflow.com/questions/24356723/how-to-draw-a-circle-with-asterisk-function-in-ruby) –