Programación General > Pascal
Numeros combinatorios
(1/1)
party_metal:
Hola estoy programando que dados n y k introducidos por el usuario te devuelve el numero combinatorio con la formula (n,k)=n!/k!(n-k)!
He hecho esto que funciona pero para numeros en plan 8,1 o 9,3 osea con n>=8 no me funciona...
¿Alguna pista?
Gracias!
--- Código: Pascal --- program lost;var g,h,resul2:integer; esValido:boolean;procedure opcion_user_combinatorio( var n:integer; var k:integer); {Datos:Se introduce la n y k del numero combinatorio} {Devuelve:} begin writeln('Introduce un numero entero que ser la n del numero combinatorio'); readln(n); writeln('Introduce un numero entero que ser la k del numero combinatorio'); readln(k); end; function validar_dato_combinatorio(n,k:integer):boolean; {Datos:n y k} {Devuelve:La validaci¢n de n y k con un booleano} begin validar_dato_combinatorio:=(n >= k); end; function evaluar_numero_combinatorio( n,k :integer):integer; var numerador,denominador:integer; function factorial(n:integer):integer; var aux,i:integer; begin aux:=1; for i:=n downto 1 do aux:=aux*i; factorial:=aux; end; begin numerador:=factorial(n); denominador:=factorial(k)*factorial(n-k); evaluar_numero_combinatorio:=numerador div denominador; end; procedure mostrar_combinatorio(evaluar_numero_combinatorio:integer); begin writeln('El resultado es',evaluar_numero_combinatorio); end;{programa principal}begin opcion_user_combinatorio(g,h); esValido:=validar_dato_combinatorio(g,h); if esValido then begin resul2:=evaluar_numero_combinatorio(g,h); mostrar_combinatorio(resul2); end else writeln('Datos introducidos incorrectos');readln;end.
m0skit0:
Lógico, la combinatoria y el factorial son para números enteros, no reales.
party_metal:
Hola?
Lógico porque yo no estoy metiendo numeros reales porque evidentemente todo está hecho con integers y aparte cuando puse que meto 8,1 quiere decir n=8 y k=1...
De todas maneras gracias pero ya he solucionado el problema. Lo que pasa es que al ser un factorial tan grande poniendo las varibles como integer se excede de rango y me salen cosas raras... :)
m0skit0:
--- Cita de: "party_metal" ---Lógico porque yo no estoy metiendo numeros reales porque evidentemente todo está hecho con integers y aparte cuando puse que meto 8,1 quiere decir n=8 y k=1...
--- Fin de la cita ---
Am, vale <_< estoy atontao...
--- Cita de: "party_metal" ---Lo que pasa es que al ser un factorial tan grande poniendo las varibles como integer se excede de rango y me salen cosas raras...
--- Fin de la cita ---
Jeje, a mí también me pasó. Hay que tener cuidado con los factoriales porque se hacen grandes ¡muy deprisa!
Navegación
Ir a la versión completa