Bueno este es el ejercicio, lo estoy intentando modificar, pero soy un pakete en c todavía, llevo varios dias dandole vueltas pero me rindo he llegao a algo que en teoría esta bien pero falla
Modificar la función factorial() para que devuelva -1 en caso de que no se pueda calcular el factorial de su argumento. Corregir el programa principal para que imprima un mensaje de error si factorial() devuelve un -1.
/* Programa: Factoriales
*
* Descripción: Ejemplo de uso de la función factorial().
*
* Revisión 0.0:
*
* Autor:
*/
#include <stdio.h>
/* prototipos de las funciones */
long int factorial(long int a);
main(void)
{
long int valor;
printf("Introduzca un valor ");
scanf("%ld",&valor);
printf("El factorial de %ld es: %ld\n", valor, factorial(valor));
}
/* Función: factorial()
*
* Descripción: Devuelve el factorial de su argumento
*
* Argumentos: long int a: Valor del que se calcula el factorial.
*
* Valor devuelto: long int: El factorial del argumento a.
*
* Revisión 0.0:
*
* Autor:
*/
long int factorial(long int a)
{
long int fact; /* valores parciales de factorial */
fact = 1;
while(a>0){
fact *= a;
a--;
}
return fact;
}
He hecho esto pero no furula xD
/* Programa: Factoriales
*
* Descripción: Ejemplo de uso de la función factorial().
*
* Revisión 0.0:
*
* Autor:
*/
#include <stdio.h>
/* prototipos de las funciones */
long int factorial(long int a);
main(void)
{
long int valor;
printf("Introduzca un valor ");
scanf("%ld",&valor);
if (factorial(valor)==-1);
{
printf ("Error");
}
else
{
printf("El factorial de %ld es: %ld", valor, factorial(valor));
}
// comentarios varios..
long int factorial(long int a)
{
long int fact; /* valores parciales de factorial */
fact = 1;
while (a>0) {
fact *= a;
a--;;
}
if (a<0)
{
fact=-1;
}
}
;
return fact;