Loops, Ajuda! - Resolvido

Cara, uma ultima modificacao do seu codigo. Voce nao precisa calcular os coeficientes em todas as iteraçoes, eh perda de tempo (apenar de seu programa ser simples), entao inclua o calculo dos coeficientes dentro da condicao if, como a seguir:

double populacaoEurasia = 1000;  
		 double populacaoEstasia = 5000;  
		 double populacaoOceania = 10000;
		 double totalEurasia = 0; 
		 double totalEstasia = 0;
		 double totalOceania = 0;
		 System.out.printf("%5s%30s%30s%30s\n", "ano", "Eurasia", "Estasia", "Oceania");  
		 for (int i = 0; i <= 1000; i += 10) {                              
			 if (i > 0 && i%100 == 0){//acontece desastre
				 totalEurasia = populacaoEurasia * Math.pow(1 + 0.02, i);  
			     totalEstasia = populacaoEstasia * Math.pow(1 + 0.01, i);  
			     totalOceania = populacaoOceania * Math.pow(1 + 0.005, i);
			     populacaoEurasia = populacaoEurasia/2;  
		         populacaoEstasia = populacaoEstasia/2;  
		         populacaoOceania = populacaoOceania/2;
		         System.out.printf("%5d%,30.2f%,30.2f%,30.2f\n", i, totalEurasia, totalEstasia, totalOceania);
		     }  
		              
		 }

Veja que o System.out.printf esta dentro da clausula IF, pois do contrario voce vai imprimir populacao == 0 ate 90 anos e de repente voce tera mais de 7.000.000 no ano 100, o que eh impossivel, pois uma populaçao nao pode surgir do NADA!..rsr

t+

[quote=Vini Fernandes]Cara, uma ultima modificacao do seu codigo. Voce nao precisa calcular os coeficientes em todas as iteraçoes, eh perda de tempo (apenar de seu programa ser simples), entao inclua o calculo dos coeficientes dentro da condicao if, como a seguir:

double populacaoEurasia = 1000;  
		 double populacaoEstasia = 5000;  
		 double populacaoOceania = 10000;
		 double totalEurasia = 0; 
		 double totalEstasia = 0;
		 double totalOceania = 0;
		 System.out.printf("%5s%30s%30s%30s\n", "ano", "Eurasia", "Estasia", "Oceania");  
		 for (int i = 0; i <= 1000; i += 10) {                              
			 if (i > 0 && i%100 == 0){//acontece desastre
				 totalEurasia = populacaoEurasia * Math.pow(1 + 0.02, i);  
			     totalEstasia = populacaoEstasia * Math.pow(1 + 0.01, i);  
			     totalOceania = populacaoOceania * Math.pow(1 + 0.005, i);
			     populacaoEurasia = populacaoEurasia/2;  
		         populacaoEstasia = populacaoEstasia/2;  
		         populacaoOceania = populacaoOceania/2;  
                       System.out.printf("%5d%,30.2f%,30.2f%,30.2f\n", i, totalEurasia, totalEstasia, totalOceania);         
		     }  
		     
		 }  

t+[/quote]

Vini, não é perda de tempo… na sua abordagem a população só cresce a cada 100 anos e nunca diminui com desastres.

double populacaoEurasia = 1000;  
double populacaoEstasia = 5000;  
double populacaoOceania = 10000;  
System.out.printf("%5s%30s%30s%30s\n", "ano", "Eurasia", "Estasia", "Oceania");  

//pelo enunciado deve calcular para todos os anos, mesmo mostrando só de 10 em 10 anos                              
// e começa a calcular no ano 1, já que o ano 0 é o dos dados iniciais
for (int i = 1; i <= 1000; i ++) { 

              populacaoEurasia = populacaoEurasia * 1.02;  
              populacaoEstasia = populacaoEstasia * 1.01;  
              populacaoOceania = populacaoOceania * 1.005;
   
              if(i%100 == 0){ //acontece desastre  
                     populacaoEurasia = populacaoEurasia/2;  
                     populacaoEstasia = populacaoEstasia/2;  
                     populacaoOceania = populacaoOceania/2;  
             }  
            
              if(i%10 == 0){ //De 10 em 10 anos mostra a população
                     System.out.printf("%5d%,30.2f%,30.2f%,30.2f\n", i, populacaoEurasia, populacaoEstasia, populacaoOceania);  
              }
}  

renamed , meu codigo e o do sgtbreitner sao equivalentes, porem, o meu evita que ele faça os calculos do coeficiente em um momento que nao interessa, por exemplo: suponha i == 55, mas i nao eh multiplo de 100, entao para que calcular o coeficiente? Interessa apenas aqueles em que i % 100 == 0. Se o calculo do coeficiente consumisse 10 minutos teriamos um alto custo de processamento. Foi isso o que quis dizer…rsrs
Além do mais, exibir uma saida de 10 em 10 anos que nao mostra alteracao do tamanho da populacao eh bem esquisito. Repentinamente do ano 90 a populacao pula de 0 para 7.000.000 no ano 100! Isso eh pra la de estranho…rsrs
t+

[quote=Vini Fernandes]renamed , meu codigo e o do sgtbreitner sao equivalentes, porem, o meu evita que ele faça os calculos do coeficiente em um momento que nao interessa, por exemplo: suponha i == 55, mas i nao eh multiplo de 100, entao para que calcular o coeficiente? Interessa apenas aqueles em que i % 100 == 0. Se o calculo do coeficiente consumisse 10 minutos teriamos um alto custo de processamento. Foi isso o que quis dizer…rsrs
Além do mais, exibir uma saida de 10 em 10 anos que nao mostra alteracao do tamanho da populacao eh bem esquisito. Repentinamente do ano 90 a populacao pula de 0 para 7.000.000 no ano 100! Isso eh pra la de estranho…rsrs
t+[/quote]

Eae kra…

Na verdade, ele precisa calcular porque para saber a população do ano 100, por exemplo, ele precisa saber a do ano 99, e pra saber a do ano 99, a do ano 98, e assim por diante…
Do jeito que você propôs, teremos a mesma população durante 100 anos, porque ele só calculará qnd i for múltiplo de 100, entendeu o que eu quis dizer?

renamed, voce tem razao! Pensei na saida do codigo apenas de 100 em 100 anos!..rsrs. Foi mal!!

t+