In deze oefening wordt een dictionary gebruikt om een boodschappenlijstje samen te stellen.
Gegeven een bestand, zoals bijvoorbeeld meubelmaker.csv1. Bekijk dit niet in excel, maar in notepad of kladblok; dan zie je de tekst staan zoals jouw programma het zal lezen:
bitset;2 scharnier;1 plankdrager;7 kastslot;12 plankdrager;12Op elke regel staat een item, met daarna hoeveel stuks er aangekocht moeten worden. Hetzelfde item kan verschillende keren voorkomen: dan moeten er extra stuks aangekocht worden.
Schrijf een klasse Boodschappenlijstje.
int GetAantal(string item)
die teruggeeft hoeveel stuks er van dat item aangekocht moeten worden.
void SchrijfHeleLijst()
die de hele boodschappenlijst (inclusief hoeveelheden) uitschrijft. Uiteraard is testen maar nuttig als je ook weet wat je verwacht. Vervang het bestand door eentje waar maar een paar regeltjes in staan, dan kan je ook zelf de telling uitvoeren. (Dodona zal deze methode niet testen.)
List<string>[] GesorteerdPerHoeveelheid()
die een array teruggeeft waarin elk element een list van woorden is. Op index i
zijn alle items te vinden die exact i
keer aangekocht moeten worden. (Op index 0 zal er dus een lege lijst staan.)
De array is niet langer dan nodig.
lange vingers:2 ketchup:1 lange vingers:1 napoleonbonbons:3en er wordt een Boodschappenlijstje-object
boodschappen
aangemaakt dat dit inleest, dan hebben volgende oproepen het genoteerde resultaat:
boodschappen.GetAantal("WC-papier") -> 0 boodschappen.GetAantal("lange vingers") -> 3en bevat de array die teruggegeven wordt door de methode GesorteerdPerHoeveelheid() volgende inhoud:
element op index 0: lege lijst element op index 1: lijst met 1 element ("ketchup") element op index 2: lege lijst element op index 3: lijst met 2 elementen ("lange vingers" en "napoleonbonbons")