C/Visual C - Factorizacion

 
Vista:

Factorizacion

Publicado por Rene Acevedo (1 intervención) el 15/11/2000 00:00:00
Amigos alguno de Ud. conoce algun programa hecho en c o c++ que resuelva cualquiera de los 10 casos de factorizacion? gracias a la persona que me conteste
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Factorizacion

Publicado por Un Aprendiz (1 intervención) el 15/11/2000 00:00:00
Hola ante todo; no se si me equivocare con mi interpretacion, si mal no entiendo, te refieres a la factorizacion de los numeros del 1 al 10.
Pues bien, yo soy un princiante pero ahí va mi respuesta (las rutinas estan en C, pero serian facilmente reescritas en C++):
Los métodos que yo conozco son, uno utilizando la recursividad y otro utilizando un simple bucle.
- Utilizando la recursividad simplemente tendras que crear una funcion que se llame a si misma y, con lo cual se vaya cargando en la pila para luego descargarse. El codigo seria algo asi:

#include <stdio.h>
...
...
unsigned long factoriza (int numero)
/* utiliza entero largo para que el resultado no se salga del rango de los
enteros y sin signo por que el resultado no va a ser negativo */
{
unsigned long calcula;

/* Si el numero es 1, directamente devuelve 1!= 1*/
if (numero==1) return 1;
/* aqui es donde la funcion se llama a si misma, aqui esta la intringulis
de este metodo */
calcula = factoriza(numero-1)*numero;
/* como veras, la multiplicacion se realiza de forma descendente hasta que
la ultima llamada a funcion termina devolviendo el factorial de 1 */

/* devolver el valor de la operacion */
return calcula;
}

- Si por el contrario deseas utilizar un bucle, lo podra realizar de diversas maneras (supongo que sabras que lo podrias tambien hacer con while o do while), con un bucle for y multiplicacion ascendente, el codigo seria algo asi:

#include <stdio.h>
unsigned long factoriza (int numero);
...
...
register int i;
/* Lo de "register" es solo para utlizar un registro del procesador, incrementado
asi la velocidad de acceso a dicha variable, y dado que es un indice
accedemos muchas veces a la misma; simplemente optimiza un poquillo
la ejecucion, no es necesario */
unsigned long calcula;
int numero;
...
...
scanf("%d",&numero);

for (i=0;i<numero;i++)
calcula=calcula*i;
...
printf("%lu",calcula);
...

Espero que te ayude, si es lo que preguntabas; si no lo es, lo siento; espero que te ayude.
Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar