Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: enrique8923 en 23 Febrero 2009, 07:20 am



Título: Ejercicio Java
Publicado por: enrique8923 en 23 Febrero 2009, 07:20 am
Bueno, no lei, y supongo que este problema puede ir aqui.

El ejercicio es el siguiente, si me ayudan a resolverlo, se los agradeceria mucho.

Disenie un programa para caluclar la suma de n terminos de la siguiente serie:

1, -1/2 , 1/3 , -1/4, 1/5........

bueno , si meayudan se los agradeceria de antemano.


Título: Re: Ejercicio Java
Publicado por: Banti en 23 Febrero 2009, 08:21 am
Si ya diseñaste el programa, cual problema hay?

Yo nose nada de java (no me gusta):
El programa seria (en pseudocodigo (version Vaati's)):
Código:
n=-1
c=0
Mientras (c < 500)
 c = c + 1
 Si (n=-1)
  n=1
 Sino
  n=-1
 Fin si
 resultado=n+c
 Imprimir (resultado)
Fin Mientras

No?


Título: Re: Ejercicio Java
Publicado por: enrique8923 en 23 Febrero 2009, 09:08 am
   void procesar(){
   
   int num=1, deno=1;
   double suma=0;
      
   for (int conta=0;conta<5;conta++){
      
      imprimir(num+"/"+deno);
      
      suma+=(double)num/deno;
      
      if (num>-1)
         num-=2;
      else num+=2;
      
      deno+=1;   
         
   }
   
   txtS.append("Suma es: "+suma);         
   
   }

Yo hice eso, tambien vale? :O, Gracias brother, sos lo maximo, te debo 1 XD


Título: Re: Ejercicio Java
Publicado por: juancho77 en 6 Marzo 2009, 20:29 pm
void procesar() quedo bien. Yo lo haría algo así: (un poco mas elegante digamos)

en vez de sumar y restar dos unidades a num, haria:

Código
  1. num=num*-1;

y en vez de tener dos variables "iguales" como son deno y conta, podes usar conta para marcar el denominador, iniciarlo en 1 y en vez de terminarlo en menor que veces, lo terminas en menor igual.

y debes arreglar el bucle FOR ya que eso solo calcula los 5 primeros términos. Puedes hacerlo cambiando el 5 por una variable N que entre como parametro. El resultado puede ser devuelto por la función:

Código
  1. public double procesar(int veces){
  2.  
  3.   int num=1;
  4.   double suma=0;
  5.  
  6.   for (int conta=1;conta<=veces;conta++){
  7.  
  8.      imprimir(num+"/"+conta);
  9.      suma+=(double)num/conta;
  10.  
  11.      num= num*1;
  12.  
  13.   }
  14.    return suma;  
  15.   }
  16.  


saludos!