[RESOLVIDO]Laço for

12 respostas
long

ae galera novo no forum… :slight_smile:
gostaria de uma ajuda da galera
como mtos outros ae to comecando agora tbm
keria fazer um laço for dentro de outro for tipo

2^1/50 2^2/49 2^3/48… 2^50/1

e a cada resultado ele mostrasse o resultado
pra isso fiz duas variaveis um i e um j
so que quando rodo o algoritmo ele faz meio q roda primeiro em relacao ao i e dpois em relacao ao j
keria q eles fossem rodados juntos… enquanto o i fosse incrementado o j tbm iria decrementar

public class Calculo{ public static void main (String [] args){ int i, j; double s; s = 0; for (i=1; i <= 50; i++) { for (j=50; j >= 1; j--) { s = Math.pow(2,i)/j; System.out.printf(s); } } } }

12 Respostas

tkx

Bom… faça teste de mesa!

Tem muitos tópicos q ensinam fazer teste de mesa, e nosso amigão Google tb!

Mas vou te dar uma mão, pra vc ver o poder dos laços for!

Veja seu código com uma adaptação simples:

public class Calculo{ public static void main (String [] args){ int i, j; double s; s = 0; j = 50; for (i=1; i <= 50; i++) { s = Math.pow(2,i)/j; System.out.printf(s); j--; } } }

Acho q isso além de resolver seu problema, ainda reduz a complexidade de seu algoritmo de O(n^2) para O(n).

De qq forma, n testei, só peguei seu código e adaptei, então teste e veja se é isso, se não for diga!

Se tiver respondido, edite o título do tópico e coloque [RESOLVIDO] no início!

[]'s

renanedpedroso

Pelo que entendi do seu problema, realmente não é necessário utilizar dois laços encadeados, como postou o tkx está correto.

pvrsouza

Eu acho que nem é necessário utilizar dois laços.

public class Calculo {

    public static void main(String[] args) {
        int j = 50;
        double s = 0;

        for (int i = 1; i < 50; i++) {
            s = Math.pow(2, i) / j;
            System.out.println(s);
            j--;            
        }
    }
}
T
# public class Calculo {  
   
     public static void main(String[] args) {  
         int j = 50;  
         double s = 0;  
   
         for (int i = 1; i < 50; i++,j--) {  
             s = Math.pow(2, i) / j;  
             System.out.println(s);               
         }  
     }  
 }

Olha só, um laço for, pode receber mais de uma variavel para modificar, apenas separando com virgula.

pvrsouza

Verdade, bem observado!

tkx

Ja q eh pra economizar variaveis!

public class Calculo { public static void main(String[] args) { for (int i = 1, j = 50; i < 50; i++,j--) { System.out.println("i="+i+"\tj="+j+"\t2^i/j="+(double)(Math.pow(2, i)/j)); } } }

renanedpedroso

tkx:
Ja q eh pra economizar variaveis!

public class Calculo { public static void main(String[] args) { for (int i = 1, j = 50; i < 50; i++,j--) { System.out.println("i="+i+"\tj="+j+"\t2^i/j="+(double)(Math.pow(2, i)/j)); } } }

Você rodou este código?

j não chega a 1;

Abraço!

tkx

Correto! Pq a condição de parada eh i<50!

Basta alterar para i<=50!

renanedpedroso

Aliás… de todos os códigos postados, somente o código do tkx o j chega a 1…

É um detalhe fácil de corrigir, mas faz diferença…

renanedpedroso
public class Calculo {  
  
  public static void main(String[] args) {
        for (int i = 1; i <= 50; i++) {
            System.out.println("i=" + i + "\tj=" + (50-i+1) + "\t2^i/j=" + (double) (Math.pow(2, i) / (50-i+1)));
        }
    }

}

Somente utilizando o i como variável.

Não é o código mais bonito do mundo mais é o código com menos variáveis… :slight_smile:

tkx
renanedpedroso:
public class Calculo {  
  
  public static void main(String[] args) {
        for (int i = 1; i <= 50; i++) {
            System.out.println("i=" + i + "\tj=" + (50-i+1) + "\t2^i/j=" + (double) (Math.pow(2, i) / (50-i+1)));
        }
    }

}

Somente utilizando o i como variável.

Não é o código mais bonito do mundo mais é o código com menos variáveis... :)

Muito bom!

Agora o Long não poderá reclamar de falta de exemplos!

Aqui deu pra aprender mta coisa! Economia de variáveis, usos do laço for, tabulação de strings, incremento e decremento de variáveis...

Long, coloque [RESOLVIDO] no tópico!

Qq dúvida, não hesite!

long

aee era isso msm q eu keria x)
vlw msm a todos q responderam
coisa simples :wink:

Criado 23 de março de 2010
Ultima resposta 23 de mar. de 2010
Respostas 12
Participantes 5