WolfgangKaier/MihaelMattes Blatt3
A
Systemnahe Software I
im Wintersemester 2009/2010
Abgabetermin:bis03.November2009
9 Zahlen sortieren (16 Punkte)
ShreibenSieeinProgrammbsort.,welhesvonderStandardeingabeint-Ganzzahleneinliest
(biszueinerüberdasMakroMAXNUMBERSvonIhnendeniertenMaximalanzahl),siemitHilfe
desBubblesort-AlgorithmussortiertunddannaufderStandardausgabeinaufsteigendsortierter
Reihenfolgeausgibt.
IhrProgrammsollinderLagesein,zweiFehlerzuständezuerkennen:Erstenskannessein,
dasseinBenutzer statteinerZahletwasandereseingibtunddasEinlesensomitfehlshlägt.
Zweitenssollerkanntwerden,wennmehralsMAXNUMBERSZahleneingebenwurden.Inbeiden
FällensolldasProgrammeineFehlermeldungaufderStandardfehlerausgabeausgebenundsih
beenden.
Werten Sie das Ergebnisder zum Einlesenverwendeten Funktion sanf mitHilfeeiner
swith-Anweisungaus.
ImErfolgsfallsolldasProgrammaufderStandardfehlerausgabe dieAnzahlderdurhge-
führtenVertaushungenausgeben.
Beispielehierzu(MAXNUMBERShatdadenWert10):
$ ./bsort
4 3 1 2
1 2 3 4
Fertig. Es wurden 5 Vertaushungen gemaht.
$ ./bsort
1 2 3 4 5 6 7 8 9 10 11
Es gibt mehr als 10 Zahlen in der Eingabe!
$ ./bsort
1 2 3 a 5
Es wurde etwas anderes als eine Zahl gelesen!
Hinweis1:SpeihernSiedieZahlenineinemArrayderGröÿeMAXNUMBERS(ähnlihzuJava;
RükgabewertsderFunktionsanferkennen.Siekönnendiesenbeispielsweisemit
int gelesen = sanf(...); speihern.BeiErfolgliefertsanfdieAnzahlderVariablenzu-
weisungenzurük,beiMisserfolgistdieZahlalsokleineralserwartet.WenndieEingabe zu
Endeist,hatderRükgabewertdenWertdesMakrosEOF(endofle).
Hinweis3:SiekönnendieZahlenjedesMalvonHandeingeben(Strg-DaufeinerneuenZeile
beendetdieEingabe)oderSiekönnensihdieEingabeumlenkungderShellmitHilfedesOpe-
rators<zunutzemahen.LegenSiehierzueineneueDatei(mitdergewünshtenEingabeals
Inhalt)anundführenSiedasProgrammwiefolgtaus:./programmname <eingabedateiname
Hinweis4: EineBeshreibungvonBubblesort ndenSiebeispielsweisein der Wikipedia
(hierausshnittsweisekopiert):
DieReihewirdinaufsteigenderRihtungdurhlaufen.Dabeiwerdenimmerzweibenah-
barte Elemente betrahtet.WennsieinfalsherOrdnungstehen,werdensievertausht.Am
Endestehtdasgröÿteoderdaskleinste(jenahSortierung)ElementamEndederReihe.
DerobigeShrittwirdsolangewiederholt,bisdieReihekomplettsortiertist.Dabeimuss
dasletzteElementdesvorherigenDurhlaufsabernihtmehrbetrahtetwerden,daesseine
endgültigePositionshongefundenhat.
Jenahdem,obauf-oderabsteigendsortiertwird,steigendiegröÿerenoderkleinerenEle-
mentewieBlasenimWasser(daherderName)immerweiternahoben,dasheiÿt,andasEnde
derReihe.AuhwerdenimmerzweiZahlenmiteinanderinBubblesvertausht.
VielErfolg!