Autor
|
Tema: Problema con Factorial.. (Leído 5,820 veces)
|
Komodo
Desconectado
Mensajes: 352
|
#include <stdio.h> //Ejercicio 10 int factorial(int ff) { if (ff > 0) return ff * factorial(ff-1); else return 1; } int main() { int num=0,n=0,array[num],a,resto=0; for(a=num;a>0;a--){ array[n]=a; n++; } for(n=0;n<num;n++){ if(array[n]!=1){ } else{ } } return 0; }
Este programa coge un numero e imprime su factorial y el proceso, ejemplo: 4 - 4*3*2*1 = 24 Vale, y si lo prueban veran que a partir del 8 no funciona... porque?
|
|
|
En línea
|
|
|
|
clodan
Desconectado
Mensajes: 277
|
No se si es lo que buscabas, pero te la complicaste demasiado... ya lo probe y asi queda mas compacto: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a=1, c, resultado=1; while (c!=a){ resultado=resultado*a; a++; // jejeje toy empezando a usar estos como me dijeron ;D } return 0; }
Obviamente, al usar variables int, tenes menos espacios reservados y por lo tanto no vas a tener tanta libertad al preguntar un numero... osea, no creo qe el maximo a evaluar sea 25 o 20...
|
|
« Última modificación: 3 Septiembre 2010, 15:18 pm por clodan »
|
En línea
|
|
|
|
Komodo
Desconectado
Mensajes: 352
|
Tio ayudame si sabes de verdad, el code mio esta hecho así porque es para una web.
Y tu code tiene un error.
Esto es una tontería: resultado=resultado*a;
Tienes que sumar a resultado la operación que tu pones detrás.
Yo lo que quiero es que me expliquen porque cuando pongo 9 el programa se cierra y da error.
eDITO: yo no lo hice como todo el mundo que va añadiendo hasta que llega al numero que ingreso, yo he ido restando hasta que llega a 1, y por eso lo ves tan dificil.
|
|
« Última modificación: 3 Septiembre 2010, 15:57 pm por Komodo »
|
En línea
|
|
|
|
clodan
Desconectado
Mensajes: 277
|
el code mio no tira ningun error xD si copiaste y lo pegaste en 1 sola linea, cualquier code tira error. En que parte de todo lo que dijiste dice qe es para una web??? porqe lo lei 2 o 3 veces y no encuerto la parte esa... #include <stdio.h> //Ejercicio 10 int factorial(int ff) { if (ff > 0) return ff * factorial(ff-1); else return 1; } int main() { int num=0,n=0,array[num],a,resto=0; for(a=num;a>0;a--){ array[n]=a; n++; } for(n=0;n<num;n++){ if(array[n]!=1){ } else{ } } return 0; }
Este programa coge un numero e imprime su factorial y el proceso, ejemplo: 4 - 4*3*2*1 = 24 Vale, y si lo prueban veran que a partir del 8 no funciona... porque?
|
|
|
En línea
|
|
|
|
Komodo
Desconectado
Mensajes: 352
|
Es un error lógico no que tire un error el compilador ¬¬
Lo digo yo, y donde dice que no lo puedo hacer así?
Jajajjaa LOL
|
|
|
En línea
|
|
|
|
clodan
Desconectado
Mensajes: 277
|
Es un error lógico no que tire un error el compilador ¬¬
Lo digo yo, y donde dice que no lo puedo hacer así?
Jajajjaa LOL
mira, ahi hice que ande... ahora te muestro lo que cambie: La funcion la mande abajo y arriba la declare nada mas, despues al num=0 le saque el =0, ya que si despues le vas a asignar un valor, es innecesario asignarle 0, Agrege un par de \n para dejar espacios.. y mmm no me acuerdo qe mas cambie :s ahora anda barbaro, lo unico qe tiene es que suponete... si vos ingresas 10 te va a devolver este resultado: Ingrese un Numero: 10 //el numero qe ingresamos 10 9 8 7 6 5 4 3 2 1 3628800 // este seria el resultado Esto lo hace el programa porqe le pusiste aca: for(n=0;n<num;n++){ if(array[n]!=1){ printf("%i\n",array[n]); } else { printf("%i\n",array[n]); } } los printf()... si no los pondrias y asignaras eso a algun valor quedaria solamente el resultado. Salu2! #include <stdio.h> #include <stdlib.h> int factorial(int ff); int main(){ int num,n=0,array[num],a,resto=0; printf("Introduce numero: \n"); for(a=num;a!=0;a--){ array[n]=a; n++; } for(n=0;n<num;n++){ if(array[n]!=1){ } else { } } printf("%i\n",factorial (num )); return 0; } int factorial(int ff){ if (ff > 0){ return (ff * factorial(ff-1)); } else { return 1; } }
EI: juntando mensajes.igualmente el problema qe veo qe persiste es que el resultado es un numero tan grande que probablemente supere el espacio reservado y tira error el programa, pero hasta 12 o 13 anda barbaro el programa.
|
|
« Última modificación: 3 Septiembre 2010, 18:07 pm por Eternal Idol »
|
En línea
|
|
|
|
Komodo
Desconectado
Mensajes: 352
|
Primero no hagas doble post esta prohibido.
Segundo se perfectamente que si quito el printf y tal me queda solo el resultado, pero es que no quiero, veo que no lees..
|
|
|
En línea
|
|
|
|
clodan
Desconectado
Mensajes: 277
|
En que parte de todo lo que dijiste que lo pongo aca abajo para qe puedas "leer" especificaste como querias el resultado?? En ningun momento dijiste: Para que es el codigo, que funcionamiento debia tener ni con que fin o para que uso, entonces mejor lee tus comentarios y despues lee los mios Primero no hagas doble post esta prohibido.
Segundo se perfectamente que si quito el printf y tal me queda solo el resultado, pero es que no quiero, veo que no lees..
Es un error lógico no que tire un error el compilador ¬¬
Lo digo yo, y donde dice que no lo puedo hacer así?
Jajajjaa LOL
Tio ayudame si sabes de verdad, el code mio esta hecho así porque es para una web.
Y tu code tiene un error.
Esto es una tontería: resultado=resultado*a;
Tienes que sumar a resultado la operación que tu pones detrás.
Yo lo que quiero es que me expliquen porque cuando pongo 9 el programa se cierra y da error.
eDITO: yo no lo hice como todo el mundo que va añadiendo hasta que llega al numero que ingreso, yo he ido restando hasta que llega a 1, y por eso lo ves tan dificil.
#include <stdio.h> //Ejercicio 10 int factorial(int ff) { if (ff > 0) return ff * factorial(ff-1); else return 1; } int main() { int num=0,n=0,array[num],a,resto=0; for(a=num;a>0;a--){ array[n]=a; n++; } for(n=0;n<num;n++){ if(array[n]!=1){ } else{ } } return 0; }
Este programa coge un numero e imprime su factorial y el proceso, ejemplo: 4 - 4*3*2*1 = 24 Vale, y si lo prueban veran que a partir del 8 no funciona... porque?
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola No he probado tu código pero a simple vista creo que el fallo está aquí int num=0, array[num]
Estás declarando un array con 0 posiciones, cámbialo a ver si se soluciona Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
clodan
Desconectado
Mensajes: 277
|
Hola No he probado tu código pero a simple vista creo que el fallo está aquí int num=0, array[num]
Estás declarando un array con 0 posiciones, cámbialo a ver si se soluciona Saludos el problema estaba justo donde vos lo marcaste... esta declarando un array con la cantidad de espacios 0 jajaja osea, cada vez qe se quiere meter algo en el array no se puede! jajaja buena observacion! yo le habia sacado al codigo el =0 del num para que el array qede indefinido.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Descomposición factorial en 64 bits
Programación C/C++
|
miguelelmejor
|
3
|
5,134
|
26 Diciembre 2012, 03:45 am
por Heisenbergs
|
|
|
Factorial de un numero!
Programación C/C++
|
barnix456
|
3
|
3,403
|
12 Mayo 2012, 17:00 pm
por barnix456
|
|
|
[Solucionado] Problema para sacar factorial de un entero
Programación C/C++
|
Mario Olivera
|
3
|
2,906
|
1 Agosto 2014, 08:25 am
por eferion
|
|
|
[Solucionado] Problema en ejercicio: Sacar factorial de entero positivo (C++)
Programación C/C++
|
Mario Olivera
|
2
|
3,224
|
21 Agosto 2014, 15:35 pm
por Mario Olivera
|
|
|
Factorial c++
Programación C/C++
|
exanime
|
1
|
2,044
|
8 Septiembre 2014, 21:11 pm
por Yaldabaot
|
|