Возникли проблемы с корректной печатью одного шаблона

#c

#c

Вопрос:

Я должен составлять цифры на основе входного значения в начале программы.

Именно этот раздел доставляет мне трудности.

     for (int i = a; i > 0; i--)//Diagonal line up and to the right
    {
        for (int j = i; j > 0; j--)
        {
            cout << " ";
        }
        cout << "*" << endl;
    }
    cout << endl;
  

Он отключен на единицу, и я понятия не имею, как его исправить.

Входное число равно 7

Вывод:

 -------*
------*
-----*
----*
---*
--*
-*
-
  

Что он должен распечатать:

 ------*
-----*
----*
---*
--*
-*
*
  

Тире — это пробелы.

Ответ №1:

Вот более простой способ решить эту проблему:

 while(a--)
  std::cout << std::string(a, ' ') << "*n";
  

Ответ №2:

Вы просто сбились на 1. В каждой строке должно быть на один пробел меньше перед * . Поэтому вычтите 1 из i цикла, который печатает пробелы.

     for (int i = a; i > 0; i--)//Diagonal line up and to the right
    {
        for (int j = i-1; j > 0; j--)
        {
            cout << " ";
        }
        cout << "*" << endl;
    }
    cout << endl;