Advertisement
pseudocreator

Binomni koeficijent1

Mar 17th, 2014
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE Binomni_koef1;
  2. FROM InOut IMPORT WriteString, WriteLn, WriteInt, ReadInt, WriteCard;
  3.  
  4. CONST
  5.      granica = 20;
  6. VAR
  7.    n, k, rezultat : INTEGER;
  8.    ok : BOOLEAN;
  9.  
  10.  
  11. PROCEDURE F(stari, n, k: INTEGER; VAR ok: BOOLEAN): INTEGER;
  12. BEGIN
  13.      ok := MAX(INTEGER) DIV (n-k+1) >= stari;
  14.      IF ok THEN
  15.        RETURN stari * (n-k+1) DIV k
  16.      ELSE
  17.        RETURN stari
  18.      END;
  19. END F;
  20.  
  21. PROCEDURE BINk(n,k: INTEGER; VAR ok: BOOLEAN): INTEGER;
  22. VAR
  23.    i, rezultat : INTEGER;
  24. BEGIN
  25.      ok := TRUE;
  26.      IF (0 < n) AND (n <= granica) AND (k >= 0) THEN
  27.        IF k > n THEN
  28.          RETURN 0
  29.        ELSE
  30.          IF k > n -k THEN
  31.            k := n - k
  32.          END;
  33.          rezultat := 1;
  34.          i := 1;
  35.          WHILE (i <= k) AND ok DO
  36.            rezultat := F(rezultat, n, i, ok);
  37.            i := i +1
  38.          END;
  39.          RETURN rezultat
  40.        END
  41.      ELSE
  42.          ok := FALSE
  43.      END;
  44.      RETURN 0
  45. END BINk;
  46.  
  47.  
  48.  
  49. BEGIN
  50.      WriteString('Unesite prirodan broj n, 0 <= n <=');
  51.      WriteCard(granica,0);
  52.      WriteLn;
  53.      ReadInt(n);
  54.      WriteLn;
  55.      WriteString('Unesite prirodan broj k >= 0');
  56.      ReadInt(k);
  57.      WriteLn;
  58.      rezultat := BINk(n,k,ok);
  59.      IF ok THEN
  60.        WriteLn;
  61.        WriteString('Rezultat: ');
  62.        WriteInt(rezultat,0)
  63.      ELSE
  64.        WriteString('Greska! ')
  65.      END;
  66.  
  67. END Binomni_koef1.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement