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.
- kiosk
- personer
- kö med köelement
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:
- En metod void add_last(Type) skrivs och
läggs in i klassen List. Denna metod ska
explicit använda pekare. De färdiga primitiverna får alltså inte
användas i din kod för add_last(Type)
- Övriga metoder som behövs för att List ska
kunna vara grunden i en represenation av kiosskön ska läggas i en ny
klass som är härledd från List
och har List
som en privat basklass
- Type ska vara pekare till objekt ur en ny
kundklassen.
Redovisning
Redovisningen består av
- Ifylld försättssida
-
lämpligt kommenterad programlistning
-
en kortfattad beskrivning av valda algoritmer och datastrukturer
-
ett körexempel
-
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