Mostrar a soma de termos de uma série

7 respostas
F

Esse programa é pra escrever a soma dos 50 primeiros termos da série: 1000/1 - 997/2 + 994/3...

double A=1.0, B, i=2, s=0;
		
		B=0;
		
		for(int n=1; n&lt=50;n++){
			
			    s=s+A*B/i;
			    A=A*-1;
			    B=B-3;
			 
		  }
		  
		    
		    System.out.println(s);

Acontece que ele está mostrando como resultado 37.5. Onde errei?
Tentei iniciar a variável B com 1000, mas dá no mesmo.

7 Respostas

I

coloque o system.out.println(s) dentro do for :smiley:

F

A diferença é que agora mostra muitos valores. No final continua aparecendo 37.5.

Guilherme_Gomes
double B=1000, i=1, s=0;
boolean op = true;
for(int n=0; n&lt50;n++){  
    s = op ? (s+B/i) : (s-B/i);
    op = !op;
    B -= 3;
    i++;
}  


System.out.println(s);
F

Obrigado. Só umas dúvidas:
s = op ? (s+B/i) : (s-B/i);

Não entendi esse “?” nem o “:”.

Já na linha
B -= 3;
O que é " B-"?

Guilherme_Gomes
B = B-3;
//é a mesma coisa que
B -= 3;
//pode usar para qualquer operando como *=, /=, +=

String x = CONDIÇÃO_BOOLEANA ? SE_SIM : SE_NÃO;
 s = op ? (s+B/i) : (s-B/i); 
/*
* ou seja, s será igual a (s+B/i) se op for true ou igual a (s-B/i) se op for false
* entendeu?
*/

op = !op;
// inverte op, se for true, vira false, se for false fica true!!!
F

Então isso aqui
s = op ? (s+B/i) : (s-B/i);

é como se fosse: "s recebe op, mas op é falso? Então escolha (s+B/i) ou (s-B/i) "?

O resultado dessa soma eu achei estranho.
701.9635687243127 :shock:

Guilherme_Gomes

Não, voce entendeu errado, é assim:
s = op ? (s+B/i) : (s-B/i);

é a mesma coisa que:

if(op)
   s += B/i;
else
   s -= B/i;
Criado 13 de setembro de 2007
Ultima resposta 13 de set. de 2007
Respostas 7
Participantes 3