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:
[quote]Faca um programa baseado no conceito de matriz para gerar o desenho,
conforme o exemplo abaixo.
*
**
| |[/quote]
Codigo:
[code]package algoritmos;
public class ProgramaGera {
public static void main(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("*");
*/
int posicao, t;
posicao = 6;
t = 1;// qtd de asteristico
for (int i = 1; i <= 5; i++) {// for externo conta qtd de linhas de
// asteristico
//i = 6;
for (int j = 0; j <= 10; j++)
if (j == posicao)// se j for igual posicao condicao true
{
for (int i2 = 1; i2 <= t; i2++)//for para qtd de asteristicos por linha
System.out.print("*");// imprime
t = t + 2;// contagem de asteristico, exem: imprime 1
// asteristico na segunda volta t e 1 * +2 que da = 3 na segunda linha
posicao--;// 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 ||");
//}
}
}
}
[/code]
for (int j = 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.
[code]public static void main(String[] args) {
int nivel = 5;
imprimeArvore(nivel);// cria um metodo que chama dentro do parametro o
// valor de nivel
}
//metodo para imprimir
private static void imprimeArvore(int nivel) {
for (int l = 1; l <= nivel; l++) {//le linha, ate linha menor que nivel = 5
for (int c = 1; c <= l; c++) {////le coluna, ate coluna menor que linha ?
System.out.print(""+""+""+"*"+""+""+"");//imprime
}
System.out.println();
}
System.out.println("||");
}
}
[/code]
desculpe mais nao entendi aqui:
for (int c = 1; c <= l; c++) {////le coluna, ate coluna menor que linha ?
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:
public class ArvoreDesenha {
public static void main(String[] args) {
int i = 1;
String copa = "";// copa da arvore, como string caractere
System.out.printf("%11s", (copa = "*"));// percenti S para ler
// caracteres,le ate 11 casas
copa = " ";//imprime, entra no while
while (i < 9) {// enquanto i =1 for menor que 9
i = i + 1;// igual a i++; enquanto for menor i+1 serve para
// incrementar a cada passagem.
for(int x=1;x<i;x++){
//se o resto da divisao de i por doi for 0, continua
if(i%2 ==0){
continue;
}else{
copa += "*";//se nao for divisivel entra no else incrementa mais 1 *
System.out.printf("%10s",copa);//imprime ate 10 casas
copa += "*";
System.out.printf("%-11s",copa);//insere decrementando
break;
}
}
System.out.printf("%10s","|");
System.out.printf("%s \n","|");
}
}
}
saida no console:
* ||
* ** ||
||
*** **** ||
||
***** ****** ||
||
******* ******** ||