elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con Factorial..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Factorial..  (Leído 3,335 veces)
Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Problema con Factorial..
« en: 3 Septiembre 2010, 14:20 pm »

Código
  1. #include <stdio.h>
  2.  
  3. //Ejercicio 10
  4.  
  5. int factorial(int ff) {
  6.    if (ff > 0)
  7.        return ff * factorial(ff-1);
  8.    else return 1;
  9. }
  10.  
  11. int main()
  12. {
  13.    int num=0,n=0,array[num],a,resto=0;
  14. printf("Introduce numero: ");
  15. scanf("%i",&num);
  16. for(a=num;a>0;a--){
  17.        array[n]=a;
  18.        n++;
  19. }
  20.  
  21. for(n=0;n<num;n++){
  22. if(array[n]!=1){
  23. printf("%i*",array[n]);
  24.    }
  25.    else{
  26.     printf("%i",array[n]);
  27.    }
  28. }
  29. printf("=%i",factorial(num));
  30. return 0;
  31. }

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 Desconectado

Mensajes: 277



Ver Perfil
Re: Problema con Factorial..
« Respuesta #1 en: 3 Septiembre 2010, 15:15 pm »

No se si es lo que buscabas, pero te la complicaste demasiado...

ya lo probe y asi queda mas compacto:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.  int a=1, c, resultado=1;
  7.  scanf("%d",&c);
  8.  while (c!=a){
  9.        resultado=resultado*a;
  10.        a++; // jejeje toy empezando a usar estos como me dijeron  ;D
  11.  }
  12.  printf("%d", resultado);
  13.  
  14.  system("PAUSE");
  15.  return 0;
  16. }
  17.  

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 Desconectado

Mensajes: 352



Ver Perfil
Re: Problema con Factorial..
« Respuesta #2 en: 3 Septiembre 2010, 15:56 pm »

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 Desconectado

Mensajes: 277



Ver Perfil
Re: Problema con Factorial..
« Respuesta #3 en: 3 Septiembre 2010, 16:43 pm »

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...

Código
  1. #include <stdio.h>
  2.  
  3. //Ejercicio 10
  4.  
  5. int factorial(int ff) {
  6.    if (ff > 0)
  7.        return ff * factorial(ff-1);
  8.    else return 1;
  9. }
  10.  
  11. int main()
  12. {
  13.    int num=0,n=0,array[num],a,resto=0;
  14. printf("Introduce numero: ");
  15. scanf("%i",&num);
  16. for(a=num;a>0;a--){
  17.        array[n]=a;
  18.        n++;
  19. }
  20.  
  21. for(n=0;n<num;n++){
  22. if(array[n]!=1){
  23. printf("%i*",array[n]);
  24.    }
  25.    else{
  26.     printf("%i",array[n]);
  27.    }
  28. }
  29. printf("=%i",factorial(num));
  30. return 0;
  31. }

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 Desconectado

Mensajes: 352



Ver Perfil
Re: Problema con Factorial..
« Respuesta #4 en: 3 Septiembre 2010, 16:47 pm »

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 Desconectado

Mensajes: 277



Ver Perfil
Re: Problema con Factorial..
« Respuesta #5 en: 3 Septiembre 2010, 17:06 pm »

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:

Código:
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!


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int factorial(int ff);
  5.  
  6. int main(){
  7.  int num,n=0,array[num],a,resto=0;
  8.  printf("Introduce numero: \n");
  9.  scanf("%i",&num);
  10.  for(a=num;a!=0;a--){
  11.     array[n]=a;
  12.     n++;
  13.     }
  14.  for(n=0;n<num;n++){
  15.     if(array[n]!=1){
  16.        printf("%i\n",array[n]);
  17.        }
  18.     else {
  19.        printf("%i\n",array[n]);
  20.        }
  21.     }
  22. printf("%i\n",factorial(num));
  23. system("PAUSE");
  24. return 0;
  25. }
  26.  
  27. int factorial(int ff){
  28.   if (ff > 0){
  29.         return (ff * factorial(ff-1));
  30.         }
  31.   else {
  32.         return 1;
  33.         }
  34.    }
  35.  

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 Desconectado

Mensajes: 352



Ver Perfil
Re: Problema con Factorial..
« Respuesta #6 en: 3 Septiembre 2010, 17:14 pm »

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 Desconectado

Mensajes: 277



Ver Perfil
Re: Problema con Factorial..
« Respuesta #7 en: 3 Septiembre 2010, 17:35 pm »

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  :xD


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.
Código
  1. #include <stdio.h>
  2.  
  3. //Ejercicio 10
  4.  
  5. int factorial(int ff) {
  6.    if (ff > 0)
  7.        return ff * factorial(ff-1);
  8.    else return 1;
  9. }
  10.  
  11. int main()
  12. {
  13.    int num=0,n=0,array[num],a,resto=0;
  14. printf("Introduce numero: ");
  15. scanf("%i",&num);
  16. for(a=num;a>0;a--){
  17.        array[n]=a;
  18.        n++;
  19. }
  20.  
  21. for(n=0;n<num;n++){
  22. if(array[n]!=1){
  23. printf("%i*",array[n]);
  24.    }
  25.    else{
  26.     printf("%i",array[n]);
  27.    }
  28. }
  29. printf("=%i",factorial(num));
  30. return 0;
  31. }

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 Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Problema con Factorial..
« Respuesta #8 en: 3 Septiembre 2010, 19:36 pm »

Hola

No he probado tu código pero a simple vista creo que el fallo está aquí

Código
  1. int num=0, array[num]
  2.  

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 Desconectado

Mensajes: 277



Ver Perfil
Re: Problema con Factorial..
« Respuesta #9 en: 3 Septiembre 2010, 19:47 pm »

Hola

No he probado tu código pero a simple vista creo que el fallo está aquí

Código
  1. int num=0, array[num]
  2.  

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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Descomposición factorial en 64 bits
Programación C/C++
miguelelmejor 3 3,990 Último mensaje 26 Diciembre 2012, 03:45 am
por Heisenbergs
Factorial de un numero!
Programación C/C++
barnix456 3 2,119 Último mensaje 12 Mayo 2012, 17:00 pm
por barnix456
[Solucionado] Problema para sacar factorial de un entero
Programación C/C++
Mario Olivera 3 1,746 Último mensaje 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 1,935 Último mensaje 21 Agosto 2014, 15:35 pm
por Mario Olivera
Factorial c++
Programación C/C++
exanime 1 1,053 Último mensaje 8 Septiembre 2014, 21:11 pm
por Yaldabaot
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines