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
Ir a la versión completa