/* 2. Vjezba Uporabom funkcije int rand(void); i makro naredbe void randomize(void); naciniti opcenitu funkciju za generiranje polja s n pseudoslucajnih brojeva cija se vrijednost nalazi izmedju zadane donje i gornje granice. Prototip funkcije je: gen_arr (long *polje, int n, long donja, long gornja); Naciniti funkcije za izracunavanje moda sortiranog cjelobrojnog polja: a) izravno b) rekurzivno c) nerekurzivno Treba generirati i sortirati polje (koristiti proizvoljni algoritam za sort) te izmjeriti vremena trazenja moda za svaki od tri navedena postupka. Generiranje polja i vremena ponoviti za najgori slucaj (svi elementi isti) i najbolji slucaj (svi elementi razliciti). Dobivene rezultate prikazati u tablicnom obliku. Dodatak: Pokusati poboljsati postupak c). */ #include #include #include #include #define MAX 3000 //kreator '97 void gen_arr(long *polje, int n, long donja, long gornja) { int i; randomize(); if (gornja==donja) for (i=0; ipolje[j]) { tmp=polje[i]; polje[i]=polje[j]; polje[j]=tmp; } } long mode0(long *polje, int n, int *freq) { long mode=*polje; int i, tmp_freq=1; *freq=1; for (i=1; i*freq) *freq=tmp_freq; mode=polje[i]; } return mode; } long rmode0(long *polje, int n, int *freq) { long mode; if (!n) { mode=*polje; *freq=1; } else { mode=rmode0(polje, n-1, freq); if (polje[n]==polje[n-*freq]) { mode=polje[n]; ++(*freq); } } return mode; } long rmode1(long *polje, int n, int *freq) { long mode=*polje; int i; *freq=1; for (i=1; i "); scanf("%d", &broj_pon); if (!broj_pon) break; printf("Unesite broj clanova, min i max clan > "); scanf("%d %ld %ld", &n, &min, &max); gen_arr(a, n, min, max); tajm1=clock(); for(i=0; i