Jump to content

Criar árvore


J4m3s007

Recommended Posts

Boa noite p@p.

Venho aqui pedir-vos para me indicarem umas dicas para tentar criar um programa, como o objectivo de formar uma árvore.

314avb6.jpg

O utilizador deveria inserir a altura da árvore, e consoante a altura tinha-se o comprimento. E inserir também a altura e o comprimento do tronco da árvore, sabendo que o tronco fica no meio da mesma.

Pode-se ver que a árvore só tem números ímpares (nas linhas), ou seja:

1;3;5;7;9

Se alguém pudesse dar umas dicas agradecia.

Obrigado  😕

Edited a Bold

Link to comment
Share on other sites

Calculo que seja para fazer isso de forma a que output sejam caracteres, dado ser um exercício didático.

A única dica que consigo dar é mesmo o obvio dos óbvios:

Um ciclo que pára na altura da árvore e vai incrementando a largura, e que a duas iterações do fim apenas coloca o tronco.

Qual é a tua primeira dúvida em concreto.

Link to comment
Share on other sites

# Criar arvore de Natal com o carácter (*)

altura_arvore= input ("Qual a altura da arvore?")
altura_tronco= input ("Qual a altura do tronco?")
largura_tronco= input ("Qual a largura do tronco?")

Coloquei so a altura da arvore visto que a largura aumenta consoante a altura. Acho que estou a fazer bem.

Agora vem o mais difícil que queria umas dicas para poder continuar.

😉

Link to comment
Share on other sites

Ola. Olha quando responderes aos meus topico, tenta responder em linguagem que eu perceba. ahah

É a primeira vez que es estou a ter programação e não percebo muito disso.

😁

Limitei-me a explicar matematicamente o que tens que fazer. 😉

Anyway,

linhas = 9
larguraNaUltimaLinha = 2*linhas-1 #a largura na ultima linha é a largura máxima que vais precisar.
for linha in range(1, linhas+1):
    #primeiro imprimimos os espaços antes da arvore, que é metade do espaço deixado por preencher pela arvore nessa linha
    print '#' * ((larguraNaUltimaLinha-(2*linha-1))/2),
    #depois imprimimos a arvore
    print '*' * (2*linha-1),
    #depois o resto dos espaços, que é a mesma quantidade que antes da arvore
    print '#' * ((larguraNaUltimaLinha-(2*linha-1))/2)

Este código tem alguns pormenores a acertar que não te vou dizer de mão beijada, tens que experimentar para os ver 😉 Falta ainda imprimires o tronco, mas bem percebendo o código que te deixei agora, facilmente o fazes. 🙂

Ah, e nem sequer experimentei o código, por isso se tiver erros, melhor ainda 🙂

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Parece que já dá qualquer coisa.

# Criar arvore de Natal
print "Se quer inserir valor >40, MAXIMIZE A JANELA"
print ""
linhas = input ("Qual a altura da arvore 20? ")
if linhas < 70:
    larguraNaUltimaLinha = 2*linhas-1 #a largura na ultima linha é a largura máxima que vais precisar.
    for linha in range(1, linhas+1):
        #primeiro imprimimos os espaços antes da arvore, que é metade do espaço deixado por preencher pela arvore nessa linha
        print ' ' * ((larguraNaUltimaLinha-(2*linha-1))/2),
        #depois imprimimos a arvore
        print '*' * (2*linha-1),
        #depois o resto dos espaços, que é a mesma quantidade que antes da arvore
        print ' ' * ((larguraNaUltimaLinha-(2*linha-1))/2)
    print ' ' * ((2*linhas-1)/2-1),
    print "###"
    print ' ' * ((2*linhas-1)/2-1),
    print "###"
#Linhas nao podem ser inferiores ou iguais a 5
elif (linhas <=5):
    print "insira um valor superior do que 5"
# Se nenhuma das opcoes anteriores fazer
else:
    print "Insira um valor inferior a 70"

Alguém me sabe dizer o porque do elif não fazer a função dele?

😉

Edited:

V1

# Criar arvore de Natal
print "Se quer inserir valor >40, MAXIMIZE A JANELA"
print ""
linhas = input ("Qual a altura da arvore? ")
if linhas >=6 and linhas <=70:
    larguraNaUltimaLinha = 2*linhas-1 #a largura na ultima linha é a largura máxima que vais precisar.
    for linha in range(1, linhas+1):
        #primeiro imprimimos os espaços antes da arvore, que é metade do espaço deixado por preencher pela arvore nessa linha
        print ' ' * ((larguraNaUltimaLinha-(2*linha-1))/2),
        #depois imprimimos a arvore
        print '*' * (2*linha-1),
        #depois o resto dos espaços, que é a mesma quantidade que antes da arvore
        print ' ' * ((larguraNaUltimaLinha-(2*linha-1))/2)
    print ' ' * ((2*linhas-1)/2-1),
    print "###"
    print ' ' * ((2*linhas-1)/2-1),
    print "###"
#Linhas nao podem ser inferiores ou iguais a 5
elif (linhas <=5):
    print "insira um valor superior do que 5"
# Se nenhuma das opcoes anteriores fazer
else:
    print "Insira um valor menor ou igual a 70"

V2

# Criar arvore de Natal
print "Se quer inserir valor >40, MAXIMIZE A JANELA"
print ""
linhas = input ("Qual a altura da arvore? ")
if linhas >=6 and linhas <=70:
    larguraNaUltimaLinha = 2*linhas-1 #a largura na ultima linha é a largura máxima que vais precisar.
    for linha in range(1, linhas+1):
        #primeiro imprimimos os espaços antes da arvore, que é metade do espaço deixado por preencher pela arvore nessa linha
        print ' ' * ((larguraNaUltimaLinha-(2*linha-1))/2),
        #depois imprimimos a arvore
        print '*' * (2*linha-1),
        #depois o resto dos espaços, que é a mesma quantidade que antes da arvore
        print ' ' * ((larguraNaUltimaLinha-(2*linha-1))/2)
    print ' ' * ((2*linhas-1)/2-1),
    print "###"
    print ' ' * ((2*linhas-1)/2-1),
    print "###"
# Se nenhuma das opcoes anteriores fazer
else:
    print "Insira um valor entre [6;70]"
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.