Olá, eu sou nova nesta comunidade (o que não significa que já não tenha lido algumas conversas daqui e tenho a dizer que já aprendi bastante). Estou no primeiro ano do curso de Informática e tenho uma cadeira que é Algoritmia e Programação, que não é a minha melhor (por mais irónico que pareça). Portanto, vinha-vos pedir ajuda com um exercício que é o seguinte:
" Ex14) Escreva um programa em C que apresente no ecrã uma árvore de Natal como a que se segue. (***)
Para isso deverá pedir ao utilizador o valor de B que representa o número de asteriscos (*) na base da árvore. O valor de B deverá ser obrigatoriamente ímpar e maior ou igual 3. Deverá pedir também o valor de L e A que representam, respetivamente a largura e a altura do tronco da árvore. A largura do tronco L deverá ser pelo menos 1 asterisco, deverá ser obrigatoriamente impar e não poderá ultrapassar metade de B, isto é metade do número de asteriscos da base. A altura do tronco A deverá ser pelo menos 2 asteriscos e também não deverá ultrapassar metade de B. Em caso de valores inválidos o programa deverá apresentar um erro e voltar a pedi-los. "
O exemplo da árvore em baixo tem uma base com B = 13 asteriscos, um tronco com largura L = 3 asteriscos e altura A = 4 asteriscos. "
A sério eu já tentei de tudo mas o máximo que consegui foi dar resposta aos printfs e depois o programa "explodir". Mando aqui o meu código. Se alguém me pudesse ajudar, agradecia.
P.S.: Não pus foto porque não estava a aceitar. Desculpem-me.
include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int B, A, L, i, j, k;
do
{
printf("Qual o numero de asteriscos na base da arvore?");
scanf("%d", &B);
}
while(B<3 && B%2==0);
do
{
printf("Qual o numero de asteriscos na largura?");
scanf("%d", &L);
}
while(L<1 && L!=0.5*B);
do
{
printf("Qual o numero de asteriscos na altura?");
scanf("%d", &A);
}
while(A<2 && A!=0.5*B);
for(i=3; i<=B; i++)
{
printf("");
printf("\n");
for(i=1; i=L; i++)
for(j=B/2; j>=i; j--)
printf("*");
printf("\n");
for(i=2; i<=B; i++)
for(k=B/2; k>=i; k--)
printf("*\n");
}
getchar();
return 0;
system("pause");
}
↧