Izziv 4 - Urejanje polja objektov z navadno metodo

Odprto: ponedeljek, 12. december 2022, 00.00
Rok za oddajo: ponedeljek, 19. december 2022, 23.59

Navodila

Napišite program v javi, ki prikazuje urejanje polja objektov z izboljšano navadno zamenjavo za urejanje po izbranem atributu. Program naj:

  • ureja objekte tipa Oseba, ki predstavljajo osebe,
  • generira polje naključnih oseb (izbrane velikosti),
  • z metodo navadne zamenjave uredi zaporedje po poljubnem atributu naraščajoče ali padajoče,
  • ob urejanju izpisuje sled izvajanja ter
  • omogoči večkratno urejanje iz izpis zaporedja.

Razred Oseba

Razred Oseba vsebuje naslednje atribute: String priimek, String ime in int letoR . V razredu je še konstruktor, metoda za primerjanje in metoda za izpis.

Konstruktor brez argumentov naj generira osebo z naključnimi podatki. V ta namen lahko uporabite statična polja z vnaprej pripravljenimi imeni in priimki. Leta rojstva naj bodo v smiselnem obsegu.

Za primerjavo uporabite pristop, ki ga določa vmesnik Comparable:

interface Comparable {
public int compareTo(Object o);
}

Metoda mora omogočati primerjavo po poljubnem atributu, za kar lahko izberete pristop z nastavljanjem statičnega atributa static int atr. Vrednost tega določi, po katerem izmed treh atributov naj se izvede primerjava. Primerjava nizov naj bo po abecednem vrstnem redu, števil pa po vrednosti.

Nastavljena izbira atr naj določa tudi atribut, ki ga izpisuje metoda toString().

Urejanje

Polje Oseba[] t urejamo po izbranem atributu z  izboljšano navadno zamenjavo  bubblesort(Comparable[] a),kjer urejate le do mesta zadnje zamenjave. 

Pri tem naj velja, da lahko urejanje poteka naraščajoče ali padajoče. Za to lahko podobno kot pri izbiri atr uporabite statični atribut smer (oba je treba pred urejanjem nastaviti na pravo vrednost). Ob urejanju naj se na koncu vsake izvedbe zunanje zanke izpisuje sled - v eni vrstici se izpišejo vsi elementi polja (vrednosti izbranega atributa) po vrsti, pri čemer navpična črta (|) ločuje urejeni del od neurejenega..

Testni razred

V testnem razredu izvedite naslednji postopek:

 Vnesi velikost n

 Generiraj polje tt. ki vsebuje n naključnih oseb 

  Zanka:

 Prepiši tt v t

 Izpiši polje t

 Vnesi in nastavi atr

 Vnesi in nastavi smer

 Uredi t z navadno zamenjavo (vsebuje izpis sledi)

 Izberi ponovitev ali konec

 Oddaja

Vse razrede oddajte na običajen način do naslednjega ponedeljka, do 23.59 ure.