#include /* Zadatak 1. Napisati funkciju koja kojoj su argumenti polje (niz) a prirodnih brojeva (nenegativnih) i cijeli broj n, koji zadaje broj elemenata u polju a. Funkcija mora sortirati polje a silazno po broju razlicitih neparnih djelitelja elemenata u polju. */ /* Realizacija: Sortiranje izborom ekstrema. Dovodimo najveci na pocetak i pamtimo samo indeks najveceg (prema zadanoj funkciji). */ unsigned f(unsigned n) { unsigned djel, broj = 0; for (djel = 1; djel <= n; djel += 2) if (n % djel == 0) ++broj; return broj; } void selection_sort_f(unsigned x[], unsigned n) { unsigned i, j, ind_max, temp; for (i = 0; i < n - 1; ++i) { ind_max = i; for (j = i + 1; j < n; ++j) if ( f(x[j]) > f(x[ind_max]) ) ind_max = j; if (i != ind_max) { temp = x[i]; x[i] = x[ind_max]; x[ind_max] = temp; } } return; } int main(void) { unsigned n = 7; unsigned x[] = {42, 12, 55, 94, 18, 44, 67}; unsigned i; printf("\n Pocetno polje x i vrijednosti funkcije:\n"); for (i = 0; i < n; ++i) { printf(" x[%2u] = %2u, f(x) = %2u\n", i, x[i], f(x[i])); } selection_sort_f(x, n); printf("\n Sortirano polje x po zadanoj funkciji:\n"); for (i = 0; i < n; ++i) { printf(" x[%2u] = %2u, f(x) = %2u\n", i, x[i], f(x[i])); } return 0; }