• Miércoles 20 de Noviembre de 2024, 16:39

Autor Tema:  Re: no se que más hacer !!!  (Leído 1445 veces)

Diana

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: no se que más hacer !!!
« en: Miércoles 26 de Marzo de 2003, 02:45 »
0
hola!, soy nueva en este cuento y tengo un problemilla que ya me tiene con canas...

resulta que tengo que hacer un programa que calcule el # "e" mediante el desarrollo de la serie: e=1+1/(1!)+1/(2!)+...+1/(n!).  utilizando una funcion factorial no recursiva y una funcion llamada serie que realice el calculo de e.
hize esto, pero ya no se que tengo mal...
gracias por cualquier ayuda.



//calculo del numero "e" mediante el desarrollo en serie

#include <iostream.h>

double serie (void); //prototipo de funcion
int factorial (int); //prototipo de funcion


main()

{

   cout << "teclee un numero entero positivo para calcular la serie: "<<endl;
   cin >> n;
   cout << "el valor de la serie es de" << serie << endl;

   return 0;
}

int factorial (x) //definicion de la funcion

{
   factorial=1;

   for (int counter=x; counter>=1; counter--)

      factorial*=counter;

      return factorial;
}


double serie (int n) //definicion de la funcion

{
   serie=1+1/factorial;

   for(contador=0; contador<=n; contador++)

      serie+ =contador;
      
      return serie;

}
:gracias:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: no se que más hacer !!!
« Respuesta #1 en: Miércoles 26 de Marzo de 2003, 16:07 »
0
:alien:
He detectado estos errores en la escritura de tu codigo:

1.Cero que el primer error, y gravisisimo es que no declaras algunas variables para usarlas, como es el caso de :
-
cin >> n;
no declaraste que ivas a usar la variable entera n en la funcion main

-
int factorial (x) //definicion de la funcion
{

tienes que declararlo asi:
int factorial (int x) //definicion de la funcion
{

-Luego utilizas :
{
factorial=1;
for (int counter=x; counter>=1; counter--)

nuevamente no has declarado  la variable factorial(diferente de la funcion factorial)
ni tampoco la variable counter, segun el tipo de dato que necesites.

-Al final no declaras las variables serie, contador, y factorial.
-al final en:
serie=1+1/factorial;
no le pasaste el parametro a factorial , asi que te quedaria:
serie=1+1/factorial(n);

Creo que no tinese algo claro
, y es que aunque en las funciones utlices variables del mismo nombre que en otras funciones o del mismo nombre que en el main, es necesario que las declares nuevamente ya que cada funcion posee un espacio de memoria independiente* y el compilador necesita saber para que tipo de dato debe reservar memoria... por eso mientras uno aprende, es recomendable no utilizar los mismos nombres de variables entre funciones.
*(esto es cierto con exepcion de los hilos , pero eso ya es un cuento que por ahora sera mejor que no lo toques)


Ahora bien tu programa con estos errores corregidos quedaria como esta a continuacion, aunque corregir esos errores de gramática no garantiza que tu programa haga lo que tu quieres:
 
Código: Text
  1.  
  2. //calculo del numero "e" mediante el desarrollo en serie
  3.  
  4. #include <iostream.h>
  5.  
  6. double serie ([b]int[/b]); //prototipo de funcion
  7. int factorial (int); //prototipo de funcion
  8.  
  9. [b]int[/b] main()
  10. {
  11.   [b]int n=0;[/b]
  12.   cout << "teclee un numero entero positivo para calcular la serie: "<<endl;
  13.   cin >> n;
  14.   cout << "el valor de la serie es de" << serie [b](n)[/b] << endl;
  15.   return 0;
  16. }
  17.  
  18. int factorial ([b]int[/b] x) //definicion de la funcion
  19. {
  20.   [b]int factorial=1;
  21.   int counter; [/b]
  22.   for (int counter=x; counter>=1; counter--)
  23.     factorial*=counter;
  24.   return factorial;
  25. }
  26.  
  27. double serie (int n) //definicion de la funcion
  28. {
  29.   [b]double serie;
  30.   int contador;[/b]
  31.   serie=1+1/factorial[b](n)[/b];
  32.   for(contador=0; contador<=n; contador++)
  33.      serie+ =contador;
  34.   return serie;
  35. }
  36.  
  37.  

Me he tomado el atrevimiento de reescribir tu programa para que haga lo que necesitas, si quieres que te de una explicacion màs detallada de como funciona , o de que hece cada cosa, con gusto lo hare, solo escribeme al foro.
chao suerte.  :lightsabre:
 
Código: Text
  1.  
  2. //calculo del numero "e" mediante el desarrollo en serie
  3.  
  4. #include <stdio.h>
  5.  
  6. double serie (int); //prototipo de funcion
  7. double factorial (double); //prototipo de funcion
  8.  
  9.  
  10. int main()
  11.  
  12. {
  13.   int n=0;
  14.   printf("nteclee un numero entero positivo para calcular la serie: ");
  15.   scanf("%d",&n);
  16.   printf("nel valor de la serie es de: %2.30G",serie(n));
  17.   getch();
  18.   return 0;
  19. }
  20.  
  21. double factorial (double x) //definicion de la funcion
  22.  
  23. {
  24.   double fact=1;
  25.   int count;
  26.  
  27.   for (count=x; count>1; count--)
  28.     fact*=count;
  29.   return fact;
  30. }
  31.  
  32.  
  33. double serie (int n) //definicion de la funcion
  34.  
  35. {
  36.   double ser,e=1;
  37.   int cont;
  38.  
  39.   for(cont=1; cont<=n; cont++)
  40.   {
  41.     ser=1/factorial(cont);
  42.     e+=ser;
  43.   }
  44.   return e;
  45. }
  46.  
  47.  
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Diana

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
no se que más hacer !!!
« Respuesta #2 en: Jueves 27 de Marzo de 2003, 15:08 »
0
muchas gracias, con tu ayuda he aclarado unas dudas que tenia.
:gracias: