#include #include #include /* funkcije za poredjenje qsortom*/ /* funkcija za poredjenje celih brojeva u rastucem redosledu*/ int icmp(const void *p1, const void *p2); /* funkcija za poredjenje celih brojeva u opadajucem redosledu*/ int ucmp(const void *p1, const void *p2); /* funkcija za poredjenje niski ( p1 i p2 su pokazivaci na niske)*/ int scmp(const void *p1, const void *p2); /* funkcija za poredjenje niski ( p1 i p2 su pokazivaci na pokazivace niski)*/ int pscmp(const void *p1, const void *p2); /* funkcija za poredjenje niza karaktera na koje pokazuju p1 i p2*/ int bytecmp(void *p1, void *p2); int kol = 5; main() { int i, dNiz[] = { -7, 2, 4, 1, 2, 7, 14, 3}; long dArr[] = { 40000, 2, 4, 1, 2, 7, 14, 3}; char szNiz[][10] = { "toma", "marko", "ex-marija", "u2", "1234", "deset"}; char *ps[5]; /* sortiranje celih brojeva*/ qsort( dNiz, 8, sizeof(int), icmp); qsort( dArr, 8, sizeof(long), ucmp); printf("sortiran dNiz:"); for(i = 0; i < 8; i++) printf("%d ", dNiz[i]); printf("\nsortiran dArr:"); for(i = 0; i < 8; i++) printf("%ld ", dArr[i]); /*sortiranje niski*/ printf("\nsizeof (szNiz[0]) = %d\n ", sizeof (szNiz[0])); qsort(szNiz, 6, sizeof (szNiz[0]), scmp); printf("\nleksikografski sortirani stringovi:\n"); for(i = 0; i < 6; i++) printf("%s \n",szNiz[i]); ps[0] = (char *)malloc(strlen("HTML") + 1); strcpy(ps[0], "HTML"); /* moze i ps[0] = "HTML"; */ ps[2] = (char *)malloc(strlen("BODY") + 1); strcpy(ps[2], "BODY"); ps[3] = (char *)malloc(strlen("HEAD") + 1); strcpy(ps[3], "HEAD"); ps[4] = (char *)malloc(strlen("CAPTION") + 1); strcpy(ps[4], "CAPTION"); ps[1] = (char *)malloc(strlen("BR") + 1); strcpy(ps[1], "BR"); qsort(ps, 5, sizeof(char *), pscmp); printf("\nsortirani pokazivaci na niske:\n"); for(i = 0; i < 5; i++) printf("%s \n",ps[i]); getchar(); return 0; } // funkcija za poredjenje celih brojeva u rastucem redosledu int icmp(const void *p1, const void *p2) { return ( (*(int *)p1) - (*(int *)p2) ); } // funkcija za poredjenje celih brojeva u opadajucem redosledu int ucmp(const void *p1, const void *p2) { long l; l= (*(long *)p2) - (*(long *)p1) ; if (l>0) return 1; else if (l<0) return -1; else return 0; } // funkcija za poredjenje niski ( p1 i p2 su pokazivaci na niske) int scmp(const void *p1, const void *p2) { return ( strcmp( (char *)p1, (char *)p2) ); } // funkcija za poredjenje niski ( p1 i p2 su pokazivaci na pokazivace niski) int pscmp(const void *p1, const void *p2) { return ( strcmp( *(char **)p1, *(char **)p2) ); } // funkcija za poredjenje niza karaktera na koje pokazuju p1 i p2 // kol ukazuje koliko bajtova da se poredi int bytecmp(void *p1, void *p2) { return ( memcmp( *(char **)p1, *(char **)p2, kol )); }