Нужно сделать половину елки с "*" - PullRequest
0 голосов
/ 08 апреля 2019

Требуемый выходной сигнал для половины рождественской елки:

    *
   **
  ***
 ****
*****

Я мог бы получить следующий вывод:

*
**
***
****
*****

Используя только циклы и условия (массивы, можноне могут быть использованы), как я могу получить решение, подобное первому?

main()
{
    int n;
    printf("Introduza o número de ramos:        ");
    scanf_s("%d", &n);

    for (int i = 1; i <= n; i++)
    {
        for (int j = 1 ; j <= i; j++)
        {   

            putchar('*');

        }
        putchar('\n');
    }
}

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Вам просто нужно задать условие во внутреннем цикле. Вы должны запустить внутренний цикл от 1 до n и вывести " " (пробел), если j меньше, чем i, иначе выведите '*'

for (int i = 1; i <= n; i++)
{
    for (int j = 1 ; j <= n; j++)
    {
        if(j < i)
            putchar(' ');
        else
            putchar('*');

    }
    putchar('\n');
}
0 голосов
/ 08 апреля 2019

Вы, очевидно, понимаете, как разместить несколько одинаковых символов рядом друг с другом.

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

Также обратите внимание, что количество пространств вполне предсказуемо, учитывая количество звезд: общая ширина пространств и звезд постоянна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...