Рисование треугольника с помощью цикла, используя 4 целочисленных ввода

У меня есть цикл, который печатает сетку 25 x 25 и должен нарисовать треугольник, используя 2 x-координаты и 2 y-координаты из пользовательского ввода, где x1 < х2 и у1 < y2. Он также использует два символа, введенные пользователем, чтобы заполнить внутреннюю часть и очертить внешний вид фигуры. Причина использования 4-х координат заключается в том, что другая часть назначения должна использовать эти входы для рисования прямоугольника. У меня прямоугольник работает отлично.

Я использую один и тот же цикл для печати сетки для обеих фигур, но не могу понять, как настроить операторы if, определяющие расположение двух символов, чтобы сделать треугольник.

Вот петля для треугольника. Операторы if в середине рисуют прямоугольник. Любые идеи о корректировках, чтобы вместо этого напечатать треугольник?

void Triangle::printTriangle()
{
int numrows = 25;
int numcols = 25;
int current_row = numrows; // starting row number
int current_col = 1; // starting col number
char output = '.';

for(i = 0; i < numrows; i++)        // prints 25 rows of 25 dots
{

cout << current_row << '\t';    // Print out current row number, followed by a tab

//This is our loop for each ROW
//Print out dots in each row OR stuff for the triangle
for(j = 1; j <= numcols; j++)
{
output = '.'; // Initialize output with our default value of "."

if ((current_col >= x1) && (current_col <= x2) && (current_row >= y1) && (current_row <= y2))
{
output = outer;
}

if ((current_col > x1) && (current_col < x2) && (current_row > y1) && (current_row < y2))
{
output = inner;
}

cout << output << "  "; // output our "output" value and a space
current_col++;  //Increment current column, because this is the end of this column loop iteration

} // Close column loop

cout << endl;       //...and a new line

current_col = 1;    // reset column count for next iteration
current_row--;      // decrement current row number

} // Close Row loop//output column labels across bottom line
cout << '\t';

// put 1 -> 25 across the bottom
for (i = 1; i <= 25; i++)
{
if(i < 10)
{
cout << i << "  ";
}

if(i > 9)
{
cout << i << " ";
}
}

// Spit out a couple of blank lines
cout << endl << endl;

}

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]