|
|
- ## 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
- ```
|