Elektrotehnički Fakultet Univerziteta u Beogradu                       Beograd, 07.3.2007.

Ispit iz Programiranja 2

Ispit traje 180 minuta

Napomene:

a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore.

b) Vrednost odgovora: tačan = 10; netačan = -2.5; nevažeći (nula ili više zacrnjenih kružića) = 0.

c) Na pitanjima se može osvojiti najviše 50 poena.

d) Zadaci nose po 25 poena.

I. ZADACI

1) Podaci o izdatim avionskim kartama se smeštaju u tekstualnu datoteku karte.txt. Za svaku izdatu kartu u jednom redu se pamte sledeći podaci: identifikacioni broj karte (ceo broj), šifra mesta poletanja (niz od tačno 5 karaktera), šifra mesta sletanja (niz od tačno 5 karaktera), rastojanje u kilometrima (ceo broj) i šifra putnika (ceo broj). Napisati program na programskom jeziku C koji čita navedenu datoteku i određuje putnika koji je imao najduži let (ako ima više od jednog putnika sa istom dužinom leta, vratiti prvog na kog se naišlo u datoteci). Jednom putniku može biti izdato više karata ukoliko je to bio let sa presedanjem (takve karte se nalaze jedna iza druge u datoteci). (Npr., za sledeći sadržaj datoteke putnik 125 ima let od 380+230=610 km, a putnik 345 let od 400km).

101 BG100 BU385 380 125

102 BU385 LN456 230 125

103 HU200 SN111 400 345

2) Sastaviti potprogram na programskom jeziku C za konverziju broja A (A<maxint) iz osnove p (p<10) u osnovu 10 (dekadni brojni sistem). Glavni program sa standardnog ulaza učitava brojeve p i n, kao i celobrojni niz a dužine n. U nizu a su cifre broja A i to tako da prvi element niza a predstavlja cifru najveće težine. Program treba da pozove kreirani potprogram i da nakon toga na standardnom izlazu ispiše rezultujući broj.

II. PITANJA

1)Realni brojevi se smeštaju u duhu IEEE standarda za predstavljanje realnih brojeva, sa četiri bita za predstavljanje eksponenta i 5 bita za predstavljanje normalizovane mantise sa skrivenim bitom. U  lokaciju A je smešten realan broj vrednosti -14.5. Ako se binarni sadržaj lokacije a rotira za tri mesta udesno, koja je vrednost tako dobijenog realnog broja?

 A)     18.75

 B) -21.25

(C)     21.5

2) Koju vrednost vraća poziv funkcije f(a,a) pod pretpostavkom da je a pozitivan ceo broj?

int f(int y,int x){

  if(x==1) return y;

  else return f(x-1, y)+y;

}

 A)     (a-1)/(a+1)

(B)     a2

 C) (a-1)*(a+1)/a2

3) Sledeći program:

#include <stdio.h>

void main() {

 FILE *f=fopen("x.dat", "rb"); int i,j,n=0;

 while(!feof(f)) { n++; fread(&i, sizeof(int), 1, f); }

 while(n>0) { printf("%d\n", i); n--; fseek(f, 0L, SEEK_SET); j=0;

 while(j<n) { j++; fread(&i, sizeof(int), 1, f); } }

}

(A)    Ispiše sve zapise datoteke obrnutim redosledom.

 B) Ispiše sadržaj datoteke onoliko puta koliko ima zapisa u datoteci.

 C) Ispisuje sadržaj datoteke na sledeći način: prvo sve zapise, zatim sve osim poslednjeg, itd.; na kraju samo prvi.

4) Ako je mat definisano kao int mat[5][5], poziv enigma(mat,5):

void enigma(int a[][5], int n) {

 int i,j,pom;

  for(i=0;i<n;i++)

   for(j=0;j<i;j++) {

     pom = a[i][j];

     a[i][j]=a[j][i];

     a[j][i]=pom;

 }

}

 A)     postavlja sve članove kvadratne matrice mat dimenzije nxn na vrednost člana mat[0][0].

(B)     transponuje kvadratnu matricu mat dimenzije nxn.

 C) ne menja sadržaj kvadratne matrice mat dimenzije nxn

5) Šta ispisuje sledeći program?

#include <stdio.h>

main () {

   int i,x=0;

   enum {plava, zelena=3, zuta,

         crvena, crna=7, bela};

   for (i=crvena; i<bela; i++)

       switch (i) {

            case 6: x+=1; break;

            case 7: x+=2;

            case 8: x+=3; break;

            case 9: x+=4;

      }

   printf ("%d\n", x);

}

(A)    6

 B) 10

 C) 18

6) Ako postoji definicija unsigned int broj; i važi da je sizeof(unsigned int)==2 (tip unsigned int je dužine 16 bita), koju operaciju nad binarnim sadržajem promenljive broj vrši sledeća naredba? (Bitovi su numerisani od bita najmanje težine, koji ima redni broj 0)

   broj = ((broj & 0xAAAA) >> 1) | ((broj & 0x5555) << 1);

 A)     pomeranje bita na parnoj poziciji ulevo za 1 mesto

 B) pomeranje bita na parnoj poziciji udesno za 1 mesto

(C)     zamena susednih parova bita (nulti sa prvim, drugi sa trećim, ...)