Algoritmer och datastrukturer TF3 Sy
samt
Algoritmer och datastrukturer med objektorienterad programmering

Inlämningsuppgift nummer 1,
Aftonbladet eller Expressen

Uppgift

Den abstrakta dataypen queue_of_persons är en ordnad mängd av element som kan beskriva en kiosk-kö.

Nytillkomna kunder ställer sig sist i kioskkön och gamla kunder expedieras från början av kön. En person i kön har ett namn, ett ärende och en tid som anger hur lång tid som krävs för expedieringen av ärendet.

En kiosk av typen Drugstore har ett antal egenskaper, däribland
1. en pekare till en queue_of_persons
2. time Den maximala tid en kund betjänas innan han eller hon får ställa sig sist i kön igen.
3. close_time Den tid som återstår innan kiosken stängs

Skriv en metod till en klass Drugstore. Metoden ska returna en pekare till den kö som återstår när kiosken stängs.

Varje person i kön betjänas i time sekunder, eller mindre, om en kortare tid räcker för kundens ärende. När personen är färdigexpedierad tas han eller hon bort ur kön. Annars, om ärendet tar längre tid än time ställer sig personen sist i kön igen efter att ha minskat sin ärendetid med time.

Samtidigt närmar man sig stängningsdags. Den kund som expedieras vid stängningsögonblicket, expedieras färdigt, dock som vanligt max time sekunder, varefter luckan obönhörligen stängs.

Ledning

Följande illustration kan kanske vara till din hjälp:

Man kan identifiera exempelvis följande klasser. Många andra lösningsstrategier är möjliga och lämpliga, men på denna uppgift krävs att du använder just dennna idé. Naturligtvis både kan och får du utveckla idén vidare.

Valet av klasser ska vara relevant. En generell listklass ska användas.

Anvisningar

Klassen List finns här och ska användas under följande förutsättningar:

Redovisning

Redovisningen består av
  1. Ifylld försättssida
  2. lämpligt kommenterad programlistning
  3. en kortfattad beskrivning av valda algoritmer och datastrukturer
  4. ett körexempel
  5. uppgift om var filen finns tillgänglig för läsning. Se till att ge läsrättigheter åt gruppen övriga.
Uppgiftslösningen ska i sin helhet spegla en god programmeringssed för C++ och tillämpa klassbegreppet på ett meningsfyllt sätt.

Uppgiften får lösas individuellt eller i grupper om två. Om två personer arbetar tillsammans, ska båda aktivt delta i hela utvecklingsarbetet. En ren arbetsdelning, exempelvis programmering mot dokumentation är inte tillåtet.

För handledning på denna uppgift hänvisas till Datortekniks jourhavandec handledare eller Fredriks handledningstider


Uppgifterna lämnas in enligt anvisningarna i kursplanen, senast den 16 februari.

Försättsblad finns här.


Fredrik Larsson <fredrikl@DoCS.UU.SE>
Anders Berglund <Anders.Berglund@DoCS.UU.SE>
Last modified: Sun Feb 15 12:10:01 MET 1998