Elektrotehnicki fakultet, Beograd  Ласло Краус ПЈМП
Први парцијални испит
7. 3. 1998.

Аутори: Владан Девеџић (задаци) и Ласло Краус (задаци и решења)

Задаци: 1 2 3 4 5 6 | Напоменe | Решења: 1 2 3 4 5 6

Поставка задатка 1 (20 поена) ( решење | почетак)

Саставити потпрограм за генерисање псеудослучајних бројева чија је густина расподеле вероватноће приказана на слици. На располагању стоји генератор псеудослучајних бројева са униформном расподелом.

Поставка задатка 2 (20 поена) ( решење | почетак)

Симболи A, B, C и D кодирају се са по два бита 00, 01, 10 и 11. Извршити компресију низа симбола BBCAAABDBD применом динамичког Huffman-овог поступка.

Поставка задатка 3 (15 поена) ( почетак)

Укратко објаснити принцип RSA алгоритма.

Поставка задатка 4 (20 поена) ( решење | почетак)

Саставити програм који помоћу графичког система GKS врши цртање шаховске табле са 8x8 поља највеће могуће величине. Однос ширине и висине екрана графичког терминала је 1:0.6.

Поставка задатка 5 (10 поена) ( решење | почетак)

У бази података налазе се чињенице облика lecenje( Lekar, Pacijent, Bolest), lek( Bolest, Lek) и pacijent( Pacijent, Alergija), где Alergija представља лек који пацијент не сме да узима. Саставити правила на Prolog-у помоћу којих могу да се добију одговори на питања Који је лек прописао неки лекар? и Који лек узима неки пацијент?.

Поставка задатка 6 (15 поена) ( решење | почетак)

Уређено бинарно стабло представља се листом [L,P,D], где су P податак у корену стабла, L лево подстабло чији чворови садрже само податке који су мањи од P, а D десно подстабло чији чворови садрже само податке који су већи од P. Саставити правила на Prolog-у за одређивање на ком се нивоу у стаблу налази неки податак. Корен стабла је на нивоу 0.


Напоменe ( почетак)


Решење задатка 1 ( поставка | почетак)

#include <math.h>
double urng ();
double rng () {
  double u=urng();
  return u<0.5 ? -2 + sqrt (2*u) :
                 2 - sqrt (2-2*u);
}

Решење задатка 2 ( поставка | почетак)

                                   

Резултујући код: 0110 1000 0000 1010 1000 1101 000

Решење задатка 4 ( поставка | почетак)

#include <gks.h>
void main ()
  int rs_tip=GWS_VT340, i, j;
  Gpoint polje[4];
  Glimit prozor = {0, 8, 0, 8}, slika  = (0, 0.6, 0, 0.6};
  gopengks (0, 0);
  gopenws (10, "tt:", &rs_tip);
  gactivatews (10);
  gsetwindow (1, &prozor);
  gseltran (1);
  for (i=0; i<8; i++) {
    polje[0].x = polje[1].x = i;
    polje[2].x = polje[3].x = i+1;
    for (j=0; j<8; j++) {
      polje[0].y=polje[3].y=j;
      polje[1].y=polje[2].y=j+1;
      gsetfillcolourind(1+(i+j)%2);
      gfillarea (4, polje);
    }
  }
  gdeactivatews (10);
  gclosews (10);
  gclosegks ();
}

Решење задатка 5 ( поставка | почетак)

propisao(Lekar,Lek) :-
  lecenje(Lekar,_,Bolest),
  lek(Bolest,Lek).
uzima(Pacijent,Lek) :-
  lecenje(_,Pacijent,Bolest),
  lek(Bolest,Lek),
  not(pacijent(Pacijent,Lek)).

Решење задатка 6 ( поставка | почетак)

nivo([[],P,[]],P,0).
nivo([L,K,D],P,N) :-
  K < P, nivo(L,P,N1), N is N1+1.
nivo([L,K,D],P,N) :-
  K > P, nivo(D,P,N1), N is N1+1.

( почетак)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 1999, Laslo Kraus
Последња ревизија: 23.10.1998.