Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Komodo en 3 Septiembre 2010, 14:20 PM

Título: Problema con Factorial..
Publicado por: Komodo en 3 Septiembre 2010, 14:20 PM
#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;
printf("Introduce numero: ");
scanf("%i",&num);
for(a=num;a>0;a--){
        array[n]=a;
        n++;
}

for(n=0;n<num;n++){
if(array[n]!=1){
printf("%i*",array[n]);
    }
    else{
     printf("%i",array[n]);
    }
}
printf("=%i",factorial(num));
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?
Título: Re: Problema con Factorial..
Publicado por: clodan 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:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
 int a=1, c, resultado=1;
 scanf("%d",&c);
 while (c!=a){
       resultado=resultado*a;
       a++; // jejeje toy empezando a usar estos como me dijeron  ;D
 }
 printf("%d", resultado);

 system("PAUSE");
 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...
Título: Re: Problema con Factorial..
Publicado por: Komodo 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.
Título: Re: Problema con Factorial..
Publicado por: clodan 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...
Cita de: Komodo en  3 Septiembre 2010, 14:20 PM

#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;
printf("Introduce numero: ");
scanf("%i",&num);
for(a=num;a>0;a--){
        array[n]=a;
        n++;
}

for(n=0;n<num;n++){
if(array[n]!=1){
printf("%i*",array[n]);
    }
    else{
     printf("%i",array[n]);
    }
}
printf("=%i",factorial(num));
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?
Título: Re: Problema con Factorial..
Publicado por: Komodo 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
Título: Re: Problema con Factorial..
Publicado por: clodan en 3 Septiembre 2010, 17:06 PM
Cita de: Komodo 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

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");
 scanf("%i",&num);
 for(a=num;a!=0;a--){
    array[n]=a;
    n++;
    }
 for(n=0;n<num;n++){
    if(array[n]!=1){
       printf("%i\n",array[n]);
       }
    else {
       printf("%i\n",array[n]);
       }
    }
printf("%i\n",factorial(num));
system("PAUSE");
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.
Título: Re: Problema con Factorial..
Publicado por: Komodo 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..

Título: Re: Problema con Factorial..
Publicado por: clodan 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


Cita de: Komodo 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..


Cita de: Komodo 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
Cita de: Komodo 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.
Cita de: Komodo en  3 Septiembre 2010, 14:20 PM
#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;
printf("Introduce numero: ");
scanf("%i",&num);
for(a=num;a>0;a--){
        array[n]=a;
        n++;
}

for(n=0;n<num;n++){
if(array[n]!=1){
printf("%i*",array[n]);
    }
    else{
     printf("%i",array[n]);
    }
}
printf("=%i",factorial(num));
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?
Título: Re: Problema con Factorial..
Publicado por: satu en 3 Septiembre 2010, 19:36 PM
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
Título: Re: Problema con Factorial..
Publicado por: clodan en 3 Septiembre 2010, 19:47 PM
Cita de: satu en  3 Septiembre 2010, 19:36 PM
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.
Título: Re: Problema con Factorial..
Publicado por: Komodo en 6 Septiembre 2010, 11:00 AM
Gracias satu.