Programación General > C/C++

 Re: no se que más hacer !!!

(1/1)

Diana:
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:
: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 --- //calculo del numero "e" mediante el desarrollo en serie  #include <iostream.h>  double serie ([b]int[/b]); //prototipo de funcion int factorial (int); //prototipo de funcion  [b]int[/b] main() {   [b]int n=0;[/b]  cout << "teclee un numero entero positivo para calcular la serie: "<<endl;   cin >> n;   cout << "el valor de la serie es de" << serie [b](n)[/b] << endl;  return 0; }  int factorial ([b]int[/b] x) //definicion de la funcion {   [b]int factorial=1;  int counter; [/b]  for (int counter=x; counter>=1; counter--)     factorial*=counter;   return factorial; }  double serie (int n) //definicion de la funcion {   [b]double serie;  int contador;[/b]  serie=1+1/factorial[b](n)[/b];   for(contador=0; contador<=n; contador++)      serie+ =contador;   return serie; }   
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 --- //calculo del numero "e" mediante el desarrollo en serie  #include <stdio.h> double serie (int); //prototipo de funciondouble factorial (double); //prototipo de funcion  int main() {  int n=0;  printf("nteclee un numero entero positivo para calcular la serie: ");  scanf("%d",&n);  printf("nel valor de la serie es de: %2.30G",serie(n));  getch();  return 0;}  double factorial (double x) //definicion de la funcion {   double fact=1;  int count;   for (count=x; count>1; count--)    fact*=count;  return fact;}   double serie (int n) //definicion de la funcion {   double ser,e=1;  int cont;    for(cont=1; cont<=n; cont++)  {    ser=1/factorial(cont);    e+=ser;  }  return e;}   

Diana:
muchas gracias, con tu ayuda he aclarado unas dudas que tenia.
:gracias:

Navegación

[0] Índice de Mensajes

Ir a la versión completa