[ peca89bg @ 28.12.2009. 20:59 ] @
moram ovaj zadatak da uradim do sutra:

Napisati funkciju void KonveksniOmotac (Tacka tniz, int n, Tacka omotac) koja za niz taˇcaka tniz
duˇzine n raˇcuna konveksni omotaˇc i upisuje ga u niz taˇcaka omotac. Funkcija treba da koristi:
a) spori algoritam b) brzi algoritam.

evo ga algoritam:
Code:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

#include "geometry.h"
#include "list.h"

#define EARTH_RADIUS 3440.065



void arclen(SPoint p1, SPoint p2, double *length) {

Point              p1_rct,
                   p2_rct;

double             alpha,
                   dot;



p1_rct.x = p1.rho * sin(p1.phi) * cos(p1.theta);
p1_rct.y = p1.rho * sin(p1.phi) * sin(p1.theta);
p1_rct.z = p1.rho * cos(p1.phi);

p2_rct.x = p2.rho * sin(p2.phi) * cos(p2.theta);
p2_rct.y = p2.rho * sin(p2.phi) * sin(p2.theta);
p2_rct.z = p2.rho * cos(p2.phi);



dot = (p1_rct.x * p2_rct.x) + (p1_rct.y * p2_rct.y) + (p1_rct.z * p2_rct.z);
alpha = acos(dot / pow(p1.rho, 2.0));



*length = alpha * p1.rho;

return;

}

void list_init(List *list, void (*destroy)(void *data)) {



list->size = 0;
list->destroy = destroy;
list->head = NULL;
list->tail = NULL;

return;

}



void list_destroy(List *list) {

void               *data;



while (list_size(list) > 0) {

   if (list_rem_next(list, NULL, (void **)&data) == 0 && list->destroy !=
      NULL) {

      list->destroy(data);

   }

}



memset(list, 0, sizeof(List));

return;

}



int list_ins_next(List *list, ListElmt *element, const void *data) {

ListElmt           *new_element;



if ((new_element = (ListElmt *)malloc(sizeof(ListElmt))) == NULL)
   return -1;



new_element->data = (void *)data;

if (element == NULL) {



   if (list_size(list) == 0)
      list->tail = new_element;

   new_element->next = list->head;
   list->head = new_element;

   }

else {



   if (element->next == NULL)
      list->tail = new_element;

   new_element->next = element->next;
   element->next = new_element;

}



list->size++;

return 0;

}


int list_rem_next(List *list, ListElmt *element, void **data) {

ListElmt           *old_element;



if (list_size(list) == 0)
   return -1;



if (element == NULL) {



   *data = list->head->data;
   old_element = list->head;
   list->head = list->head->next;

   if (list_size(list) == 1)
      list->tail = NULL;

   }

else {



   if (element->next == NULL)
      return -1;

   *data = element->next->data;
   old_element = element->next;
   element->next = element->next->next;

   if (element->next == NULL)
      list->tail = element;

}



free(old_element);



list->size--;

return 0;

}

int cvxhull(const List *P, List *polygon) {

ListElmt           *element;

Point              *min,
                   *low,
                   *p0,
                   *pi,
                   *pc;

double             z,
                   length1,
                   length2;

int                count;


min =(Point*) list_data(list_head(P));

for (element = list_head(P); element != NULL; element = list_next(element)) {

   p0 =(Point*) list_data(element);


   if (p0->y < min->y) {

      min = p0;
      low =(Point*) list_data(element);

      }

   else {


      if (p0->y == min->y && p0->x < min->x) {

         min = p0;
         low =(Point*) list_data(element);

      }

   }

}

list_init(polygon, NULL);


p0 = low;

do {



   if (list_ins_next(polygon, list_tail(polygon), p0) != 0) {

      list_destroy(polygon);
      return -1;

   }

   count = 0;

   for (element = list_head(P); element != NULL; element =
      list_next(element)) {


      if ((pi =(Point*) list_data(element)) == p0)
         continue;

      count++;


      if (count == 1) {

         pc =(Point*) list_data(element);
         continue;

      }


      if ((z = ((pi->x - p0->x) * (pc->y - p0->y)) - ((pi->y - p0->y) * (pc->x
         - p0->x))) > 0) {



         pc = pi;

         }

      else if (z == 0) {



         length1 = sqrt(pow(pi->x - p0->x, 2.0) + pow(pi->y - p0->y, 2.0));
         length2 = sqrt(pow(pc->x - p0->x, 2.0) + pow(pc->y - p0->y, 2.0));

         if (length1 > length2) {



            pc = pi;

         }

      }

   }



   p0 = pc;


} while (p0 != low);

return 0;

}


/*****************************************************************************
*                                                                            *
*  Define data for computing convex hulls.                                   *
*                                                                            *
*****************************************************************************/

#define            CVXPCT               10

static Point CvxTestP[CVXPCT] = {

   { 0.0,  1.0, 0.0},
   {-3.0,  5.0, 0.0},
   {-2.0, -3.0, 0.0},
   { 0.0,  0.0, 0.0},
   { 3.0,  2.0, 0.0},
   {-5.0, -2.0, 0.0},
   { 5.0,  3.0, 0.0},
   {-3.0,  3.0, 0.0},
   { 2.0,  3.0, 0.0},
   {-3.0, -1.0, 0.0}

};


int main(int argc, char **argv) {

List               P,
                   polygon;

ListElmt           *element;

Point              p1_rct,
                   p2_rct,
                   p3_rct,
                   p4_rct,
                   *point;

SPoint             p1_sph,
                   p2_sph;

double             length;

int                actual,
                   i;


/*
fprintf(stdout, "Determining whether two line segments intersect\n");

p1_rct.x = 2.0;
p1_rct.y = -1.0;
p1_rct.z = 0.0;

p2_rct.x = 4.0;
p2_rct.y = -1.0;
p2_rct.z = 0.0;

p3_rct.x = 1.0;
p3_rct.y = -2.0;
p3_rct.z = 0.0;

p4_rct.x = 3.0;
p4_rct.y = 2.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (N=OK)\n");

p1_rct.x = -4.0;
p1_rct.y = -3.0;
p1_rct.z = 0.0;

p2_rct.x = -2.0;
p2_rct.y = -1.0;
p2_rct.z = 0.0;

p3_rct.x = -1.0;
p3_rct.y = 0.0;
p3_rct.z = 0.0;

p4_rct.x = 1.0;
p4_rct.y = 2.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (N=OK)\n");

p1_rct.x = -4.0;
p1_rct.y = -3.0;
p1_rct.z = 0.0;

p2_rct.x = -2.0;
p2_rct.y = -1.0;
p2_rct.z = 0.0;

p3_rct.x = -4.0;
p3_rct.y = -1.0;
p3_rct.z = 0.0;

p4_rct.x = -3.0;
p4_rct.y = -2.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (Y=OK)\n");

p1_rct.x = -4.0;
p1_rct.y = -3.0;
p1_rct.z = 0.0;

p2_rct.x = -2.0;
p2_rct.y = -1.0;
p2_rct.z = 0.0;

p3_rct.x = -3.0;
p3_rct.y = -2.0;
p3_rct.z = 0.0;

p4_rct.x = -3.0;
p4_rct.y = -2.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (Y=OK)\n");

p1_rct.x = -3.0;
p1_rct.y = -2.0;
p1_rct.z = 0.0;

p2_rct.x = -3.0;
p2_rct.y = -2.0;
p2_rct.z = 0.0;

p3_rct.x = -3.0;
p3_rct.y = -2.0;
p3_rct.z = 0.0;

p4_rct.x = -3.0;
p4_rct.y = -2.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (Y=OK)\n");

p1_rct.x = -3.0;
p1_rct.y = -2.0;
p1_rct.z = 0.0;

p2_rct.x = 3.0;
p2_rct.y = 4.0;
p2_rct.z = 0.0;

p3_rct.x = -1.0;
p3_rct.y = 2.0;
p3_rct.z = 0.0;

p4_rct.x = 3.0;
p4_rct.y = -1.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (Y=OK)\n");

p1_rct.x = -3.0;
p1_rct.y = -2.0;
p1_rct.z = 0.0;

p2_rct.x = 3.0;
p2_rct.y = 4.0;
p2_rct.z = 0.0;

p3_rct.x = -1.0;
p3_rct.y = -2.0;
p3_rct.z = 0.0;

p4_rct.x = 3.0;
p4_rct.y = 1.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (N=OK)\n");

p1_rct.x = -3.0;
p1_rct.y = -2.0;
p1_rct.z = 0.0;

p2_rct.x = 3.0;
p2_rct.y = 4.0;
p2_rct.z = 0.0;

p3_rct.x = -3.0;
p3_rct.y = -2.0;
p3_rct.z = 0.0;

p4_rct.x = -4.0;
p4_rct.y = 3.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (Y=OK)\n");

p1_rct.x = -3.0;
p1_rct.y = -1.0;
p1_rct.z = 0.0;

p2_rct.x = 3.0;
p2_rct.y = 4.0;
p2_rct.z = 0.0;

p3_rct.x = -3.0;
p3_rct.y = -2.0;
p3_rct.z = 0.0;

p4_rct.x = -4.0;
p4_rct.y = 3.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (N=OK)\n");

p1_rct.x = -3.0;
p1_rct.y = -2.0;
p1_rct.z = 0.0;

p2_rct.x = 3.0;
p2_rct.y = 4.0;
p2_rct.z = 0.0;

p3_rct.x = -3.0;
p3_rct.y = -1.0;
p3_rct.z = 0.0;

p4_rct.x = -4.0;
p4_rct.y = 3.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}

fprintf(stdout, " (N=OK)\n");

p1_rct.x = -3.0;
p1_rct.y = 0.0;
p1_rct.z = 0.0;

p2_rct.x = -4.0;
p2_rct.y = 3.0;
p2_rct.z = 0.0;

p3_rct.x = -5.0;
p3_rct.y = 6.0;
p3_rct.z = 0.0;

p4_rct.x = -6.0;
p4_rct.y = 9.0;
p4_rct.z = 0.0;

if (lint(p1_rct, p2_rct, p3_rct, p4_rct)) {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) Y", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

   }

else {

   fprintf(stdout, "(%+.1lf,%+.1lf) to (%+.1lf,%+.1lf) and (%+.1lf,%+.1lf) "
      "to (%+.1lf,%+.1lf) N", p1_rct.x, p1_rct.y, p2_rct.x, p2_rct.y,
      p3_rct.x, p3_rct.y, p4_rct.x, p4_rct.y);

}
*/
fprintf(stdout, " (N=OK)\n");

fprintf(stdout, "Computing a convex hull\n");
fprintf(stdout, "Points in P\n");

list_init(&P, NULL);

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

   if (list_ins_next(&P, list_tail(&P), &CvxTestP[i]) != 0) {

      list_destroy(&P);
      return 1;

   }

   fprintf(stdout, "P[%03d]=(%+.1lf,%+.1lf,%+.1lf)\n", i, CvxTestP[i].x,
      CvxTestP[i].y, CvxTestP[i].z);

}

if (cvxhull(&P, &polygon) != 0) {

   list_destroy(&P);
   return 1;

}

fprintf(stdout, "Points in the convex hull\n");

i = 0;

for (element = list_head(&polygon); element != NULL; element =
   list_next(element)) {

   i++;
   point =(Point*) list_data(element);

   fprintf(stdout, "polygon[%03d]=(%+.1lf,%+.1lf,%+.1lf)\n", i, point->x,
      point->y, point->z);

}

list_destroy(&P);
list_destroy(&polygon);

fprintf(stdout, "Computing arc lengths on spherical surfaces\n");

p1_sph.phi = DEGTORAD(90.0);
p1_sph.theta = DEGTORAD(0.0);
p1_sph.rho = EARTH_RADIUS;

p2_sph.phi = DEGTORAD(90.0);
p2_sph.theta = DEGTORAD(60.0);
p2_sph.rho = EARTH_RADIUS;

arclen(p1_sph, p2_sph, &length);
actual = 3606;

fprintf(stdout, "Simple: phi=%+07.2lf, theta=%+07.2lf, rho=%.3lf\n",
   RADTODEG(p1_sph.phi), RADTODEG(p1_sph.theta), p1_sph.rho);

fprintf(stdout, "Simple: phi=%+07.2lf, theta=%+07.2lf, rho=%.3lf\n",
   RADTODEG(p2_sph.phi), RADTODEG(p2_sph.theta), p2_sph.rho);

fprintf(stdout, "length=%d, actual=%d, error=%6.4lf\n", (int)length,
   actual, fabs(1.0 - (floor(length) / actual)));

/* SFO (San Francisco) */
p1_sph.phi = DEGTORAD(90 - 37.62);
p1_sph.theta = DEGTORAD(-122.38);
p1_sph.rho = EARTH_RADIUS;

/* LAX (Los Angeles) */
p2_sph.phi = DEGTORAD(90.0 - 33.94);
p2_sph.theta = DEGTORAD(-118.41);
p2_sph.rho = EARTH_RADIUS;

arclen(p1_sph, p2_sph, &length);
actual = 293;

fprintf(stdout, "SFO: phi=%+07.2lf, theta=%+07.2lf, rho=%.3lf\n",
   RADTODEG(p1_sph.phi), RADTODEG(p1_sph.theta), p1_sph.rho);

fprintf(stdout, "LAX: phi=%+07.2lf, theta=%+07.2lf, rho=%.3lf\n",
   RADTODEG(p2_sph.phi), RADTODEG(p2_sph.theta), p2_sph.rho);

fprintf(stdout, "length=%d, actual=%d, error=%6.4lf\n", (int)length,
   actual, fabs(1.0 - (floor(length) / actual)));

/* SFO (San Francisco) */
p1_sph.phi = DEGTORAD(90 - 37.62);
p1_sph.theta = DEGTORAD(-122.38);
p1_sph.rho = EARTH_RADIUS;

/* HKG (Hong Kong) */
p2_sph.phi = DEGTORAD(90.0 - 22.31);
p2_sph.theta = DEGTORAD(113.92);
p2_sph.rho = EARTH_RADIUS;

arclen(p1_sph, p2_sph, &length);
actual = 6159;

fprintf(stdout, "SFO: phi=%+07.2lf, theta=%+07.2lf, rho=%.3lf\n",
   RADTODEG(p1_sph.phi), RADTODEG(p1_sph.theta), p1_sph.rho);

fprintf(stdout, "HKG: phi=%+07.2lf, theta=%+07.2lf, rho=%.3lf\n",
   RADTODEG(p2_sph.phi), RADTODEG(p2_sph.theta), p2_sph.rho);

fprintf(stdout, "length=%d, actual=%d, error=%6.4lf\n", (int)length,
   actual, fabs(1.0 - (floor(length) / actual)));

/* CDG (Paris) */
p1_sph.phi = DEGTORAD(90 - 49.01);
p1_sph.theta = DEGTORAD(2.55);
p1_sph.rho = EARTH_RADIUS;

/* PER (Perth) */
p2_sph.phi = DEGTORAD(90.0 + 31.94);
p2_sph.theta = DEGTORAD(115.97);
p2_sph.rho = EARTH_RADIUS;

arclen(p1_sph, p2_sph, &length);
actual = 7733;

fprintf(stdout, "CDG: phi=%+07.2lf, theta=%+07.2lf, rho=%.3lf\n",
   RADTODEG(p1_sph.phi), RADTODEG(p1_sph.theta), p1_sph.rho);

fprintf(stdout, "PER: phi=%+07.2lf, theta=%+07.2lf, rho=%.3lf\n",
   RADTODEG(p2_sph.phi), RADTODEG(p2_sph.theta), p2_sph.rho);

fprintf(stdout, "length=%d, actual=%d, error=%6.4lf\n", (int)length,
   actual, fabs(1.0 - (floor(length) / actual)));

return 0;

}


ali ne znam kako da ga iskoristim za ovaj zadatak,kolege mi rekose da je to to mada nista ne kapiram jel moze pomoc? treba mi do sutra i mnogo mi je htinoooo.. molim vaaaas