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

[0] Índice de Mensajes

Ir a la versión completa