4.8. Escreva um programa que coloque na tela meia árvore de natal com asteriscos. O número de ramos deverá ser introduzido pelo usuário.

Exemplos com 3,4 e 5 ramos:

*

**

***

*

**

***

****

*

**

***

****

*****

Passo 1

Legal, agora vamos começar a programa de verdade.

A gente está num capítulo sobre laços de repetição, então é claro que vamos usar laços para fazer esse programa. Existem milhares de jeitos para escrever esse programa, mas a ideia geral é a seguinte: vamos ler um número que o usuário inseriu, então vamos rodar dois laços de repetição, os dois laços funcionam porque são duas variáveis que vão rodar, uma variável guarda o número de linhas, ou a altura da árvore, e a outra variável guarda a quantidade de asteriscos por linha.

Passo 2

Se você ficou meio confuso, mantenha a calma, sempre é assim antes da gente começar a escrever.

Vamos começar do começo. Definir as variáveis que vamos usar. Bom, a gente vai precisar de três variáveis do tipo inteiras, uma variável vai ser usada para guardar o valor que o usuário inseriu, a segunda variável vai ser usada para guardar a altura da árvore, e a terceira variável o numero de asteriscos, então, podemos começar o programa com um simples:

i n t   i , j ,   n

Depois que o usuário inserir a altura da árvore, a gente começa os laços de repetição. Bom, queremos que aconteça o seguinte, a variável que guarda o valor das linhas, vai variar de 1 até a altura que o usuário inseriu, vamos supor que seja 4 , então:

A variável i aumenta em 1 a cada linha. A segunda variável vai ir do valor j = 1 até j = i , então por exemplo, na primeira linha j vai de 1 até 1, então temos 1 asterisco. Na segunda linha j vai de 1 até 2 , então temos dois asteriscos, e assim por diante. Fica mais ou menos assim:

Passo 3

Agora que entendemos a ideia, vamos escrever o programa. Aqui eu vou mostrar um exemplo que fiz usando dois laços, um do tipo for e outro do tipo while:

O livro trás uma solução diferente. Você pode fazer usando dois laços do tipo for, ou dois laços do tipo while também. Enfim, são milhares de soluções possíveis.

Resposta

# i n c l u d e   < s t d i o . h >

v o i d   a r v o r e ( )

{

        i n t   i ;  

        i n t   j = 1 ;  

        i n t   n ;  

        p r i n t f ( " d i g i t e   a   a l t u r a   d a   á r v o r e \ n " ) ;  

        s c a n f ( " % d " ,   & n ) ;  

        f o r   ( i = 1 ;   i < = n ;   i + + )  

        {

                w h i l e   ( j < = i )

                {

                        p r i n t f ( " * " ) ;

                        j + + ;

                }

                  j = 1 ;  

                p r i n t f ( " \ n " ) ;  

        }

r e t u r n ;

}

v o i d   m a i n   ( )

{

        a r v o r e ( ) ;

r e t u r n ;

}