Práctica N° 2: Números combinatorios


Elaborar un programa a partir de un algoritmos, diagrama de flujo y código en Java que defina el número combinatorio de m sobre n de la siguiente forma:


Análisis

En la formula anterior observamos que para determinar el número combinatorio será necesario crear una función para determinar el factorial.

Factorial

El algoritmo del factorial lo vamos a definir de la siguiente forma:

Variables:
Vamos a necesitar tres variables: Nombre y Tipo de dato.

  1. i: Entero
  2. resultado: Entero
  3. numero: Entero

Algoritmo:

  1. Asignar 1 a resultado
  2. Asignar 1 a i
  3. Obtener un número
  4. Asignar el número a la variable numero
  5. multiplicar resultado por i
  6. Asignar resultadoresultado
  7. Incrementar 1 en i
  8. Si i es mayor o igual que numero continua de lo contrario regresa al paso 5
  9. Retorna resultado

No olvides hacer la prueba de escritorio.

Diagrama de flujo:

Imagen pendiente

Código en Java

public static int factorial(int n) {
	int numero = n;
	int resultado = 1;
	int i = 1;

	do {
		resultado *= i;
		i++;
	}while(i <= numero);

	return resultado;
}

Número combinatorio

Teniendo la función de factorial podemos continuar elaborando la función combinatorio.

Sin embargo tal vez no se requiera un algoritmo como el de la función factorial ya que es una simple división de factoriales como se muestra en la formula, ni tampoco considero que se requiera un diagrama de flujo y la prueba de escritorio. Vallamos directo al código.

Código en Java

public static int combinatorio(int m, int n) {
	int resultado = 0;

	resultado = factorial(m)  /  (factorial(n) * factorial(m - n));

	return resultado;
}

Código completo

El código completo queda de la siguiente forma:

package org.luisalberto.laboratorio.practica2;

public class NumeroCombinatorio {

	public static int factorial(int n) {
		int numero = n;
		int resultado = 1;
		int i = 1;

		do {
			resultado *= i;
			i++;
		}while(i <= numero);

		return resultado;
	}

	public static int combinatorio(int m, int n) {
		int resultado = 0;

		resultado = factorial(m) / (factorial(n) * factorial(m - n));

		return resultado;
	}

	public static void main(String[] args) {
		System.out.println("Combinatorio de  (3 3) = " + combinatorio(3, 3));
		System.out.println("Combinatorio de  (8 3) = " + combinatorio(8, 3));
		System.out.println("Combinatorio de (10 4) = " + combinatorio(10, 4));
	}

}
$ javac -d . NumeroCombinatorio.java
$ java org.luisalberto.laboratorio.practica2.NumeroCombinatorio
Combinatorio de  (3 3) = 1
Combinatorio de  (8 3) = 56
Combinatorio de (10 4) = 210

Posted in

Leave a Reply