/* STUDENT.C - rangiranje studenata */ #include #include typedef struct /*definicija tipa podataka STUDENT */ { char ime[30]; char index[6]; int poeni; } STUDENT; /* prototipovi funkcija */ void sortgrupa( STUDENT [], int ); void swap( STUDENT *, STUDENT * ); int main() { STUDENT grupa[40]; /*niz tipa student formira niz grupa */ int ns; /* broj studenata */ int i, granica; /* uneti listu studenata, br. indeksa i ocena */ printf( "Broj studenata u grupi: \n " ); scanf("%d", &ns); printf( "Uneti ime, dosije i poene za svakog od studenata \n"); for( i = 0 ; i < ns ; i++) { printf("%d. student\n", i+1); // !!! scanf("%s %s %d", grupa[i].ime, grupa[i].index, &grupa[i].poeni); } /* sada ih sortirati */ sortgrupa(grupa, ns); granica = (ns * 7) / 10 -1; printf( "\n"); for( i = 0 ; i < ns ; i++ ) { printf( "%s\t %s\t %3d", grupa[i].ime, grupa[i].index, grupa[i].poeni); if ( i <= granica ) printf( " \t prosao \n"); else printf( " \t pao \n"); } return 0; } void sortgrupa(STUDENT st[],int nst) /* sortiranje poredjenjem poena */ /* st - niz struktura tipa STUDENT */ /* nst - broj studenata */ { int i, j, vrh; for( i = 0 ; i < (nst - 1) ; i++ ) { vrh = i; for( j = i+1 ; j < nst ; j++ ) { if( st[j].poeni > st[vrh].poeni ) vrh = j; } swap( &st[i] , &st[vrh] ); } } void swap( STUDENT *ps1, STUDENT *ps2 ) { STUDENT temp; strcpy(temp.ime, ps1->ime); strcpy(temp.index, ps1->index); temp.poeni = ps1->poeni; strcpy(ps1->ime, ps2->ime); strcpy(ps1->index, ps2->index); ps1->poeni = ps2->poeni; strcpy(ps2->ime, temp.ime); strcpy(ps2->index, temp.index); ps2->poeni = temp.poeni; } /* void swap( STUDENT *ps1, STUDENT *ps2 ) { STUDENT temp; temp = *ps1; *ps1 = *ps2; *ps2 = temp; } */