[Resolvido]Algoritmo que gera uma arvore em asteristico
6 respostas
olivercld
Olá bom dia, bom estou com este codigo abaixo, que tirei como exemplo para gerar uma arvore, alterei o codigo troquei valores o que eu entendi coloquei comentario nao sei se esta de acordo correto, abaixo esta o codigo e o enunciado
Enunciado:
Faca um programa baseado no conceito de matriz para gerar o desenho,
conforme o exemplo abaixo.
*
**
***
****
*****
| |
Codigo:
packagealgoritmos;publicclassProgramaGera{publicstaticvoidmain(String[]args){/* * int metade, diagonal; diagonal = 9; metade = diagonal/2; * * for(int i=0; i<diagonal;i++){ for(int j=0;j< metade - i; j++) * System.out.println(" "); for(int j=0; j<2*i+1;j++) * System.out.println("*"); */intposicao,t;posicao=6;t=1;// qtd de asteristicofor(inti=1;i<=5;i++){// for externo conta qtd de linhas de// asteristico//i = 6;for(intj=0;j<=10;j++)if(j==posicao)// se j for igual posicao condicao true{for(inti2=1;i2<=t;i2++)//for para qtd de asteristicos por linhaSystem.out.print("*");// imprimet=t+2;// contagem de asteristico, exem: imprime 1// asteristico na segunda volta t e 1 * +2 que da = 3 na segunda linhaposicao--;// posicao decrementa }else{System.out.print(" ");// System.out.println("||");}System.out.println();//pula para baixo, para nao ficar na mesma linha //for(int x=0;x<=1;x++){//System.out.println(" \t ||");//}}}}
for(intj=0; j <= 10; j++)
este for aqui que nao consegui entendelo modifiquei aumentei valores pude perceber que cada vez que colocava um valor maior dava espaco do canto esquerdo na impressao no console.
Tentei colocar o || abaixo da arvore nao obtive exito.
podem me ajudar a entender essa logica, desde já agradeço.
o seu codigo ta ok so nao imprimiu em formato arvore, coloquei uns comentarios no codigo, poderia ver se esta certo.
publicstaticvoidmain(String[]args){intnivel=5;imprimeArvore(nivel);// cria um metodo que chama dentro do parametro o// valor de nivel}//metodo para imprimirprivatestaticvoidimprimeArvore(intnivel){for(intl=1;l<=nivel;l++){//le linha, ate linha menor que nivel = 5for(intc=1;c<=l;c++){////le coluna, ate coluna menor que linha ?System.out.print(""+""+""+"*"+""+""+"");//imprime}System.out.println();}System.out.println("||");}}
desculpe mais nao entendi aqui:
for (int c = 1; c <= l; c++) {////le coluna, ate coluna menor que linha ?
olivercld
comentei seu codigo, ve se é isso porque tu usou printf e nao o System.out.println, os comentários quanto ao %10s, ve se esta de acordo, sei que o %s le caractere, a questao do 10 e do -11 que ficou meio confuso.
codigo:
publicclassArvoreDesenha{publicstaticvoidmain(String[]args){inti=1;Stringcopa="";// copa da arvore, como string caractereSystem.out.printf("%11s",(copa="*"));// percenti S para ler// caracteres,le ate 11 casascopa=" ";//imprime, entra no whilewhile(i<9){// enquanto i =1 for menor que 9i=i+1;// igual a i++; enquanto for menor i+1 serve para// incrementar a cada passagem.for(intx=1;x<i;x++){//se o resto da divisao de i por doi for 0, continuaif(i%2==0){continue;}else{copa+="*";//se nao for divisivel entra no else incrementa mais 1 *System.out.printf("%10s",copa);//imprime ate 10 casascopa+="*";System.out.printf("%-11s",copa);//insere decrementandobreak;}}System.out.printf("%10s","|");System.out.printf("%s \n","|");}}}saidanoconsole:*||***||||*******||||***********||||***************||
Thanks you, abraços.
Vingdel
Olá, pessoal!
O meu ficou assim:
/* Arvore* Autor: Delano Lima* Data: 19/10/2011*/importjavax.swing.JOptionPane;publicclassArvore{publicstaticvoidmain(String[]args){intaltura=Integer.parseInt(JOptionPane.showInputDialog("Qual a altura da árvore?"));for(inti=0;i<altura;i++){for(intj=1;j<altura*2;j++){if(j>i+altura||j<altura-i)System.out.print(" ");elseSystem.out.print("*");}System.out.println("");}for(intj=0;j<altura-2;j++)System.out.print(" ");System.out.println("| |");}}