MODULE valintalajittelu (T,n)
FOR i := 1,2,....,n-1 DO
FOR j :=i 1,..n DO
IF T[i]>T[j] vaihdaT[i]T[j]
ENDIF
ENDFOR
ENDFOR
ENDMODULE
Miten ylläolevaa lajittelua sovelletaan kun on kaksi vektoria, joista toisessa on tulokset ja toisessa henkilöt. Lajittelu pitää tehdä tulosten mukaan ylläolevalla valintalajittelulla ja nimet saada lajittelua tulostusta varten vastaavaan järjestykseen? Tarkoituksena on tehdä kaksi modulia. Miten muodostan henkilönimiä järjestävän modulin ja kuinka käytän siinä laskuria?
FOR i := 1,2,....,n-1 DO
FOR j :=i 1,..n DO
IF T[i]>T[j] vaihdaT[i]T[j]
ENDIF
ENDFOR
ENDFOR
ENDMODULE
Miten ylläolevaa lajittelua sovelletaan kun on kaksi vektoria, joista toisessa on tulokset ja toisessa henkilöt. Lajittelu pitää tehdä tulosten mukaan ylläolevalla valintalajittelulla ja nimet saada lajittelua tulostusta varten vastaavaan järjestykseen? Tarkoituksena on tehdä kaksi modulia. Miten muodostan henkilönimiä järjestävän modulin ja kuinka käytän siinä laskuria?
Vastaukset 2
Vanhimmat
Jos käsitin ihan oikein, niin ..:
"Miten ylläolevaa lajittelua sovelletaan kun on kaksi vektoria, joista toisessa on tulokset ja toisessa henkilöt."
If-testin ollessa totta vaihdat myös samassa indekseissä olevia kohtia siitä toisestakin taulusta tulosten vaihdon lisäksi. Moduli ottaa parametrikseen myös ne nimet.
Nimien vertailuun voinee käyttää jotain merkkijonovertailua. Esim. C:n strcmp/strncmp palauttaa eri arvoja riippuen siitä, kumpi sanoista tulee ennemmin aakkosjärjestyksessä vertailtaessa sanoja merkki kerrallaan.
...sijoittaa henkilöt -tulokset struktuuriin, niin lajittelu käy automaattisesti. (Toivottavasti ymmärsin kysymyksesi oikein, ohje koskee lähinnä C-kieltä, itse kun pidän tätä pseudo-ohjelmointia olevan perseestä kun siinä ei pysty hyödyntämään eri ohjelmointiympäristöjen etuja ja välttämään niiden haittoja)