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.