Calcular el factorial de un número en C


/*
==========================================================
Name        : factorial.c
Author      : Psycho
Version     : 1.0
Description : Programa para calcular el factorial de un numero.
==========================================================
*/

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

main()
{
// variable que almacena el numero que sera ingresado por el usuario
int numero = 0;

// resultado de las multiplicaiones
int resultado = 0;

// mensaje por pantalla
printf("Ingrese un numero \n");

// leer numero que introduce el usuario
scanf("%d", &numero);

// guardar en el acumulador el numero del usuario antes de ser decrementado
resultado = numero;

// si el numero es mayor a 0 calcular
if(numero > 0)
{
// bucle que realiza los calculos y decrementa el numero del usuario hasta que llegue a 1
while(numero > 1)
{
// decrementar el numero ingresado por el usuario
numero--;

// multiplicar el numero del usuario decrementado y multiplicarlo por los ya calculados
resultado = numero * resultado;
}

// imprimir por pantalla el factorial del numero ingresado por el usuario
printf("El resultado es %d \n", resultado);
}
// si el numero es menor a 0 enviar un mensaje al usuario
else if(numero < 0)
{
printf("No puede ser calculado el factorial \n");
}
// si el numero es igual a 0 mostrar que el factorial es 1
else{
printf("El numero factorial es 1 \n");
}
}

  1. #1 by orlando on May 29, 2009 - 1:20 am

    gracias sayco por publicar el ejercicio si puedo publicar otro mas como el de los asterisco si va !!!

  2. #2 by taki on May 29, 2009 - 8:28 am

    Uff taaantos recuerdos que me llegan con esos programas que has posteado últimamente!

    Y me pongo a sacar cuentas y hace casi 7 años que estudié eso mismo! Noooo que vieja estoy *snif snif

    Ya no voy a visitar más tu blog por recordarme que me han pasado un poco de años por encima U_U

  3. #3 by Psycho on May 29, 2009 - 10:52 am

    @orlando en el transcurso del fin de semana subo el ejemplo de los asteriscos, y es “Psycho” ¬¬

    @taki T___T

  4. #4 by David Tavarez on May 30, 2009 - 9:44 am

    mmmm, disculpa, pero ese metodo es muy poco algoritmico, te hubieras ahorrado un mundo utilizando recursividad aparte de que la idea es reutilizar codigo…

  5. #5 by Psycho on May 30, 2009 - 10:41 am

    @David Tavarez claro que lo pude hacer de otro modo, pero como la idea de estos ejemplos es para guiar a las personas que estudian conmigo. No quise hacer algo en que se confundieran mas de lo que pueden estar.

  6. #6 by taki on June 3, 2009 - 10:52 am

    @David Tavarez: Cuando yo estudiaba no nos dejaban usar técnicas que no hubiesemos visto/aprendido en la materia, y por lo que entiendo este es el caso del amigo Psycho U_U que cómo bien dice es un ejercicio con fines académicos.

  7. #7 by Psycho on June 3, 2009 - 9:36 pm

    @taki esa es la intención :D

  8. #8 by NELSON on September 3, 2009 - 5:05 pm

    BUENAS TARDE QUE TAL EMM ESPERO ME PUEDAN AYUDAR EN LO SIGUIENTE ESTOY COMENZANDO EN LA CARRERA DE INFORMATICA Y ME HAN PEDIDO REALIZAR DOS EJERCICIOS CON LAS SIGUIENTES CONDICIONES ES DECIR ALGORITMO PSEUDOCODIGO Y DFD DE LOS SIGUIENTES PROBLEMAS ..

    1…UN USUARIO DEBE INGRESAR UN NUMERO Y SE DEBE MOSTRAR EL FACTORIAL…

    2… DADO UN NUMERO DE 3 DIGITOS SABER SI ES PALINDROME

    POR FAVO AYUDENME DEL PRIMERO TENGO ALGUNA IDEA DEL PSEUDO PERO NO ESTOY SEGURO Y E BUSCADO INFORMACION PERO NAH NO E CONSEGUIDO NADA INTERESANTE ESPERO ME PUEDAN AYUDAR LO AGRADECERIA MUCHISIMO

  9. #9 by Psycho on September 3, 2009 - 5:18 pm

    @Nelson para tu primer problema este ejercicio te sirve, de hecho el código solicita que el usuario ingrese un numero. Y con respecto al numero palindrome puedes buscar alguna función en C que te separe el numero de tres dígitos en un array y comparar el primer numero con el ultimo.

  10. #10 by NELSON on September 3, 2009 - 5:24 pm

    Psycho :
    @Nelson para tu primer problema este ejercicio te sirve, de hecho el código solicita que el usuario ingrese un numero. Y con respecto al numero palindrome puedes buscar alguna función en C que te separe el numero de tres dígitos en un array y comparar el primer numero con el ultimo.

    disculpa psycho mi ignorancia pero no se nada de programacion no se como empezar y mucho menos terminar estoy en el primer semestre todavia jejeje y bueno no se como realizar cada una de las cosas que me piden

  11. #11 by Psycho on September 4, 2009 - 3:46 pm

    @Nelson en esta pagina tienes un video tutorial de como hacer DFD y en este otro sitio en donde puedes descargar una aplicación para crearlos.

  12. #12 by Gabriela on September 7, 2009 - 2:04 am

    **hOla!!! Gracias por tu programa!! Me ayudo mucho!!
    Gracias a tus explicaciones comprendo mejor el proceso del factorial ;) **

  13. #13 by b4mv on October 4, 2009 - 5:26 pm

    oye una pregunta, ¿como se expresaria el algoritmo de la operacion del factorial?

  14. #14 by Mago de Oz on January 8, 2010 - 3:11 pm

    Perdonad mi ignorancia, porque al main no se le indica que es del tipo entero, por ejemplo ( int main () ) ?

    Daria igual?

  15. #15 by Mago de Oz on January 8, 2010 - 3:27 pm

    Crreo que es igual q se recuerde lo del factorial igual a 1 , al final ja que al principio del bucle ya se indica que si es mayor a 1 entre a calcularse, parece una obviedad, pero lo recalco ya que estaba haciendo pruebas con o sin esta parte.

  16. #16 by Psycho on January 8, 2010 - 3:30 pm

    @Mago de Oz al colocar **int main** lo que quieres decir es que va a retornar un numero entero cuando termine de ejecutarse el programa.

(will not be published)