Нужно напечатать треугольник. С клавиатуры вводится высота и ширина основания треугольника

Я написала код. Но он неправильно работает. Я не понимаю, какой цикл я делаю неправильно. Я думаю, что проблема в том, что в первом цикле я иду до col а во втором до row. Но как по другому сделать, я не знаю.

std::cout << "Enter row: ";
int row;
std::cin >> row;

std::cout << "Enter col: ";
int col;
std::cin >> col;
for (int row = 0; row < col; ++row)
{
    for (int col = 0; col < row; ++col)
        std::cout << "*";
    std::cout << "\n";
}
row 3
col 4 
*
**
***

Ответы (1 шт):

Автор решения: MBo

1 ) Вы теряете заданное количество строк, поэтому сделайте первый цикл

for (int i = 0; i < row; ++i)

2 ) Не вполне ясно, как должен выглядеть треугольник - если так, как у вас, прямоугольный с левым вертикальным ребром, то рассчитывайте количество звездочек, например, так:

  for (int j = 0; j < 1 + i*(col-1)/(row-1); ++j)
     std::cout << "*";

Формула выбрана из тех соображений, что в первой строке должна быть одна звездочка, в последней col звездочек, а в остальных - линейная интерполяция между этими величинами.

→ Ссылка