## 5 Ostoslistaaja **Tehtävä:** Neljännen luvun viimeisessä tehtävässä tehdään taulukkoa apunakäyttäen ohjelma, joka ylläpitää ostoslistaa. Ohjelmassa on kolme toimintoa; (1) Lisää tuote (2) Poista listan viimeinen tuote ja (3) Lopeta. Valinta 1 lisää uuden tuotteen listaan, valinta 2 poistaa listan vanhimman merkinnän ja 3 lopettaa ohjelman. Lisäksi lista päivitetään joka kerta kun siihen lisätään jotain "Ostoslistalla on seuraavaa; [tuotteet]" ja lopuksi tulostetaan mitä koriin jäi: "Koriin jäi [määrä] tuotetta: [lista]". Toimiessaan oikein ohjelma tulostaa seuraavaa: Example output: ``` Ostoslistalla on seuraavaa; (1) Lisää tuote (2) Poista listan viimeinen tuote (3) Lopeta: 1 Mitä lisätään?: nakkeja Ostoslistalla on seuraavaa; nakkeja (1) Lisää tuote (2) Poista listan viimeinen tuote (3) Lopeta: 2 Poistetaan nakkeja Ostoslistalla on seuraavaa; (1) Lisää tuote (2) Poista listan viimeinen tuote (3) Lopeta: 3 Koriin jäi 0 tuotetta: ``` **Vastaus** ``` #!/usr/bin/env ruby # coding: utf-8 def kori(lista) puts "Ostoslistalla on seuraavaa;" lista.each{ |name| print name + " " }; print "\n" puts "(1) Lisää tuote (2) Poista listan viimeinen tuote (3) Lopeta:" valintaUser = Integer(gets.chomp) case valintaUser when 1 puts "Mitä lisätään?: " lista.insert(-1,String(gets.chomp)) # Tai vaihtoehtoisesti # lista.push(String(gets.chomp)) when 2 puts "Poistetaan #{lista.shift()}" when 3 puts "Koriin jäi #{lista.length} tuotetta:" puts lista Process.exit(0) else warn "Virheellinen valinta" end end ostoslista = [] while true kori(ostoslista) end ```