[BATCH] Calcular numeros combinatorios

Iniciado por ---saster---, 29 Diciembre 2009, 13:15 PM

0 Miembros y 1 Visitante están viendo este tema.

---saster---

Aqui dejo un script para calcular los numeros combinatorios.
Funciona mal con numeros mayores de 13 porque salen numeros demasiado grandes. :P

El codigo:

Código (dos) [Seleccionar]
@echo off
rem calculo de numeros combinatorios
title Calcular un numero combinatorio
mode con cols=40 lines=20
:menu
cls
echo.
echo.
echo    ( X )         X!
echo    (   ) = ______________
echo    ( Y )     Y! (X-Y)!
echo.&echo.
set/p "x=valor de x >>>"
if not defined x (goto menu)
if %x% LSS 0 (goto menu)
set/p "y=valor de y >>>"
if not defined y (goto menu)
if %y% LSS 0 (goto menu)
if not %x% LSS %y% (goto calculo) else (goto menu)
:calculo
set/a "a=b=c=1"
set/a "d=%x%-%y%"
for /l %%r in (%x%,-1,1) do (set/a a=a*%%r)
for /l %%s in (%y%,-1,1) do (set/a b=b*%%s)
for /l %%t in (%d%,-1,1) do (set/a c=c*%%t)
set res1=%a%
set/a res2=%b%*%c%
set/a res=%res1%/%res2%
echo.
echo El resultado es: %res%
set "x="
set "y="
pause>nul
goto menu



saludos :D

CaronteGold



    Lo que has puesto es lo de factorial no ¿?

  Ej:

  (6)       6x5x4x3x2x1        6x5x4x3x2x1     5x4
         = ------------------ = ---------------- = ---------  =  20
  (3)       3! (6-3)!                3x2x1 3x2x1        1


   

---saster---

Cita de: CaronteGold en 29 Diciembre 2009, 16:42 PM
Lo que has puesto es lo de factorial no ¿?

La formula es la que has puesto.
Es un numero combinatorio de x sobre y :P

Para calcularlo hay que calcular 3 factoriales: x, y (x-y)


for /l %%r in (%x%,-1,1) do (set/a a=a*%%r)
for /l %%s in (%y%,-1,1) do (set/a b=b*%%s)
for /l %%t in (%d%,-1,1) do (set/a c=c*%%t)


Después simplemente hacer las cuentas.

set res1=%a%
set/a res2=%b%*%c%
set/a res=%res1%/%res2%


Se utilizan los factoriales pero no es un factorial es un numero combinatorio sobre otro.

saludos

CaronteGold



    La verdad, no entiendo bien el comando "for", pero bueno te entiendo lo que me quieres decir, pero Números combinatorios, no es algo general¿? , es decir, binomio de newton, y más cosas ¿?

---saster---

no se si es muy general o no, un numero combinatorio de x sobre y se diría :P

El binomio de Newton es una cosa distinta que utiliza los numeros combinatorios. De hecho yo hice este code para conseguir sacar el binomio de Newton desde bat

Esta sería la formula:



CitarLa verdad, no entiendo bien el comando "for"

En este caso simplemente es un bucle que multiplica su numero por el anterior hasta llegar a 0 (empezando por el numero que le digas)

Lo utilizo para hallar el factorial de los numeros que insertas

saludos

CaronteGold


   Yo hice el binomio de newton en .bat, solo para números, es decir, sin contar las variables, e hice en python para números y variables, creo que lo voy a subir aquí el código, pero es algo liado, pero bueno lo subo, si quieres míralo xD.