• Sábado 14 de Diciembre de 2024, 19:05

Autor Tema:  Ayuda Porfa!!!  (Leído 1254 veces)

elcucuyo

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Ayuda Porfa!!!
« en: Viernes 30 de Abril de 2004, 04:46 »
0
hola
estoy haciendo el código fuente de un programa en c, (que es sencillicimo pero...).
se trata de sacar el factorial de un número, lo hice con un for; pero no se que ocurre; hice el contador (f), pero no se incrementa.
cualquier respuesta estaría muy agradecido.
el codigo es:
#include <stdio.h>
int factorial(int n);
int main(void){
    int  fac, n;
    printf("escriba el numero\n");
    scanf("%d",&n);
    fac=factorial(n);
    printf("el factorial es %d \n",fac);
    return 0;
    }
int factorial(int n){
     int i, f=1;
     for(i=1;i==n;i++){
         f=f*i;
        return f;
        }
  }
cuando se ejecuta el programa me retorna 1

Diabliyo

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Ayuda Porfa!!!
« Respuesta #1 en: Viernes 30 de Abril de 2004, 07:21 »
0
Hola:

Bueno tenias VARIOS errorsillos.... El primero era que llamabas al CICLO FOR, y solo corria una ves... ya que dentro pusiste el RETUNR, esto asi que corriera una sola ves y regresara el VALOR...se supoe que RETUR lo debes poner al FINAL..para que haga el proceso del factorial y devuelva el resultado guardado en la variable "f".

Y tu segundo error fue que NO supiste implementar el acomodamiento para poder hacer el factorial, porque se supone que el factorial de un numero se saca asi:

Ejemplo de un Numero: 5

5x4x3x2x1= 120

Para hacerlo tienes que tener la VARIABLE qu lleva el numero ( n ), y dos variables que te ayudaran ( i, f ).

Segun como corregi tu codigo, esta es la logica: i va valer el numero enviado menos uno ( i=n-1...si enviamos un 5, entonces i valdra 4. ) asi de este modolo DECREMENTAREMOS hasta que sea mayor que 0 (osea 1) y por ultimo la variable "f" la igualasmos al numero (f= n), su valor cambiara segun la multiplicacion ( f= f*i;)

Código: Text
  1. #include &#60;stdio.h&#62;
  2.  
  3. int factorial(int n);
  4.  
  5. int main()
  6.   {
  7.   int fac, n;
  8.  
  9.   printf(&#34;escriba el numero&#092;n&#34;);
  10.   scanf(&#34;%d&#34;,&n);
  11.   fac=factorial(n);
  12.   printf(&#34;el factorial es %d &#092;n&#34;,fac);
  13.   return 0;
  14.   }
  15.  
  16. int factorial(int n)
  17.   {
  18.   int i, f=n;
  19.  
  20.   for(i=n-1;i&#62;0;i--)
  21.     {
  22.     f=f*i;
  23.     }
  24.   return f;
  25.   }
  26.  


byeeeeeeeeee

elcucuyo

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Ayuda Porfa!!!
« Respuesta #2 en: Sábado 1 de Mayo de 2004, 02:38 »
0
hola
muchas gracias por contestar, ya pense tambíen e otra forma de hacerlo :P
combiando la condición del for, :comp:  y si corre.
bueno gracias
salu2 :D

Diabliyo

  • Miembro activo
  • **
  • Mensajes: 40
    • Ver Perfil
Re: Ayuda Porfa!!!
« Respuesta #3 en: Sábado 1 de Mayo de 2004, 07:48 »
0
Hola:

Como tip..seria bueno que lo hicieras con RECURSION, tambien funciona y mucho mejor :D..

byeee

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Ayuda Porfa!!!
« Respuesta #4 en: Sábado 1 de Mayo de 2004, 07:58 »
0
de hecho en este caso especifico yo no recomendaria usar la recursividad.. por que de seguro se te llena la pila.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io