Ruby fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.7 KiB

4 years ago
  1. ## 5 Ostoslistaaja
  2. **Tehtävä:**
  3. Neljännen luvun viimeisessä tehtävässä tehdään taulukkoa apunakäyttäen ohjelma, joka ylläpitää ostoslistaa.
  4. 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]".
  5. Toimiessaan oikein ohjelma tulostaa seuraavaa:
  6. Example output:
  7. ```
  8. Ostoslistalla on seuraavaa;
  9. (1) Lisää tuote (2) Poista listan viimeinen tuote (3) Lopeta:
  10. 1
  11. Mitä lisätään?:
  12. nakkeja
  13. Ostoslistalla on seuraavaa;
  14. nakkeja
  15. (1) Lisää tuote (2) Poista listan viimeinen tuote (3) Lopeta:
  16. 2
  17. Poistetaan nakkeja
  18. Ostoslistalla on seuraavaa;
  19. (1) Lisää tuote (2) Poista listan viimeinen tuote (3) Lopeta:
  20. 3
  21. Koriin jäi 0 tuotetta:
  22. ```
  23. **Vastaus**
  24. ```
  25. #!/usr/bin/env ruby
  26. # coding: utf-8
  27. def kori(lista)
  28. puts "Ostoslistalla on seuraavaa;"
  29. lista.each{ |name| print name + " " }; print "\n"
  30. puts "(1) Lisää tuote (2) Poista listan viimeinen tuote (3) Lopeta:"
  31. valintaUser = Integer(gets.chomp)
  32. case valintaUser
  33. when 1
  34. puts "Mitä lisätään?: "
  35. lista.insert(-1,String(gets.chomp))
  36. # Tai vaihtoehtoisesti
  37. # lista.push(String(gets.chomp))
  38. when 2
  39. puts "Poistetaan #{lista.shift()}"
  40. when 3
  41. puts "Koriin jäi #{lista.length} tuotetta:"
  42. puts lista
  43. Process.exit(0)
  44. else
  45. warn "Virheellinen valinta"
  46. end
  47. end
  48. ostoslista = []
  49. while true
  50. kori(ostoslista)
  51. end
  52. ```