J4m3s007 Posted December 11, 2009 at 08:23 PM Report Share #299944 Posted December 11, 2009 at 08:23 PM 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. 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 More sharing options...
Tharis Posted December 12, 2009 at 11:01 AM Report Share #299992 Posted December 12, 2009 at 11:01 AM Podes fazer isso com PIL. Link to comment Share on other sites More sharing options...
J4m3s007 Posted December 12, 2009 at 12:40 PM Author Report Share #300005 Posted December 12, 2009 at 12:40 PM Podes fazer isso com PIL. O que posso utilizar é: for,while, def, input, if, else, elif, e mais uns poucos. 😉 Link to comment Share on other sites More sharing options...
pedrotuga Posted December 12, 2009 at 03:50 PM Report Share #300026 Posted December 12, 2009 at 03:50 PM 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 More sharing options...
J4m3s007 Posted December 12, 2009 at 06:49 PM Author Report Share #300061 Posted December 12, 2009 at 06:49 PM # 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 More sharing options...
djthyrax Posted December 12, 2009 at 09:48 PM Report Share #300085 Posted December 12, 2009 at 09:48 PM Tens sempre X espaços por linha, a diferença é que uns são vazios e outros são cor, e o número de espaços com cor é 2n-1, sendo n o número da linha. 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 More sharing options...
J4m3s007 Posted December 12, 2009 at 11:03 PM Author Report Share #300093 Posted December 12, 2009 at 11:03 PM Tens sempre X espaços por linha, a diferença é que uns são vazios e outros são cor, e o número de espaços com cor é 2n-1, sendo n o número da linha. E em relação as espaços como faço?cumps 😉 Link to comment Share on other sites More sharing options...
djthyrax Posted December 12, 2009 at 11:28 PM Report Share #300103 Posted December 12, 2009 at 11:28 PM Então, quando é espaço, usas ' ', quando é árvore, usas '*'. Qual é a dúvida? 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 More sharing options...
J4m3s007 Posted December 12, 2009 at 11:34 PM Author Report Share #300106 Posted December 12, 2009 at 11:34 PM Então, quando é espaço, usas ' ', quando é árvore, usas '*'. Qual é a dúvida? Como digo ao programa que vai ter que deixar um X de espaços entre a margem e a formação da árvore? Link to comment Share on other sites More sharing options...
djthyrax Posted December 13, 2009 at 02:05 AM Report Share #300120 Posted December 13, 2009 at 02:05 AM A linha n tem x posições, e na linha n, há 2n-1 posições ocupadas pela arvore e o resto está desocupado, logo há x-(2n-1) posições desocupadas, metade antes, metade depois. 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 More sharing options...
J4m3s007 Posted December 13, 2009 at 02:11 AM Author Report Share #300121 Posted December 13, 2009 at 02:11 AM eu fiz assim: n=input("Qual a Altura da arvore? ") for contador in range(1,n+1,1): x=2*contador-1 print "",x e da me: 1 3 5 7 9 11 agora eu queria que o programa invés de números que aparecesse em asteriscos para formar a árvore de natal, sabes como poderia fazer ? Link to comment Share on other sites More sharing options...
djthyrax Posted December 13, 2009 at 03:32 PM Report Share #300156 Posted December 13, 2009 at 03:32 PM 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 More sharing options...
J4m3s007 Posted December 13, 2009 at 07:57 PM Author Report Share #300194 Posted December 13, 2009 at 07:57 PM 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 More sharing options...
JoaoRodrigues Posted December 13, 2009 at 08:31 PM Report Share #300201 Posted December 13, 2009 at 08:31 PM Porque o IF já faz 😉 O IF diz menor de 70, logo tudo o que for menor de 70 entra ali. O elif diz menor ou igual a 5. Todos estes também são menores que 70, logo entram na condição do if. Muda o if para maior que 5 e menor que 70 e já funciona. Link to comment Share on other sites More sharing options...
J4m3s007 Posted December 13, 2009 at 08:33 PM Author Report Share #300202 Posted December 13, 2009 at 08:33 PM Porque o IF já faz 😉 O IF diz menor de 70, logo tudo o que for menor de 70 entra ali. O elif diz menor ou igual a 5. Todos estes também são menores que 70, logo entram na condição do if. Muda o if para maior que 5 e menor que 70 e já funciona. Thank´s parece que postei ao mesmo tempo que tu. 😉 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now