programa de factoriales!!!
Hola!!! waaaaa ayer toda la noche y no conseguí sacar esta caca de programa
Tengo que sumar todos los factoriales hasta el 9!! y no se porque pero me sale 5, numero inccorecto evidentemente
he puesto printfs pero no consigo descubrir donde falla, he cambiado de sitio las llaves y sigue sin funcionar así que las he dejado en el primer sitio donde creí :s
Espero que me ayudeis
Besos
/*Programa 9 factoriales*/
#include <stdio.h>
#include <conio.h>
main()
{
clrscr();
int suma,x,resul,fact,cont;
suma=0;
x=1;
resul=1;
for(fact=x; fact<=9; fact=fact+2)
{
for(cont=x;cont>=1; cont=cont-1)
{
resul=resul*cont;
}
suma=suma+resul;
resul=1;
}
printf("n El resultado es :%i",suma);
getch();
}
Tengo que sumar todos los factoriales hasta el 9!! y no se porque pero me sale 5, numero inccorecto evidentemente
he puesto printfs pero no consigo descubrir donde falla, he cambiado de sitio las llaves y sigue sin funcionar así que las he dejado en el primer sitio donde creí :s
Espero que me ayudeis
Besos
/*Programa 9 factoriales*/
#include <stdio.h>
#include <conio.h>
main()
{
clrscr();
int suma,x,resul,fact,cont;
suma=0;
x=1;
resul=1;
for(fact=x; fact<=9; fact=fact+2)
{
for(cont=x;cont>=1; cont=cont-1)
{
resul=resul*cont;
}
suma=suma+resul;
resul=1;
}
printf("n El resultado es :%i",suma);
getch();
}
el factorial de 9 se calcula asi:
1*1*2*3*4*5*6*7*8*9=362880.
Si queremos calcularlo debemos seguir los siguientes pasos:
1*1=1
1*2=2
2*3=6
6*4=24
24*5=120
120*6=720
720*7=5040
5040*8=40320
40320*9=362880
por lo tanto algo asi deberia funcionarte
int fact=1;
for(x=fact;x<=9;x++)
fact=fact*x;
Creo que este bucle es suficiente para lo que pides
Hasta la proxima condesita....
1*1*2*3*4*5*6*7*8*9=362880.
Si queremos calcularlo debemos seguir los siguientes pasos:
1*1=1
1*2=2
2*3=6
6*4=24
24*5=120
120*6=720
720*7=5040
5040*8=40320
40320*9=362880
por lo tanto algo asi deberia funcionarte
int fact=1;
for(x=fact;x<=9;x++)
fact=fact*x;
Creo que este bucle es suficiente para lo que pides
Hasta la proxima condesita....
El fallo lo tienes en los bucles,el primero debe quedar asi
for(fact=x; fact<=9; fact=fact+1)
cambia el valor de aumento de fact, es decir de uno en uno pa sumarlos tos.
Y el segundo bucle solo debes cambiar la x por fact
for(cont=fact;cont>=1; cont=cont-1)
en lugar de
for(cont=xt;cont>=1; cont=cont-1)
Tal como lo tienes x siempre es uno y el bucle se repite identicamente.
Pruebalo y veras como ahora si
for(fact=x; fact<=9; fact=fact+1)
cambia el valor de aumento de fact, es decir de uno en uno pa sumarlos tos.
Y el segundo bucle solo debes cambiar la x por fact
for(cont=fact;cont>=1; cont=cont-1)
en lugar de
for(cont=xt;cont>=1; cont=cont-1)
Tal como lo tienes x siempre es uno y el bucle se repite identicamente.
Pruebalo y veras como ahora si