23 Kontrolltöö näidisülesanne 2: Parkla
Ülesanne. Parkla
Failis parkla.txt on kujutatud ristkülikukujulise parkla pealtvaade. Failis olevad märgid tähistavad parkimiskohtade staatust:
X hõivatud parkimiskoht (esialgu failis ei esine, tekib programmi töö käigus)
P vaba parkimiskoht
– sõidutee, millel ei saa parkida
Näide faili sisust:
PPPP-P -----P PPPP-P
Kirjuta programm, mis teeb järgnevat.
Kõigepealt koostab programm faili põhjal kahemõõtmelise järjendi ning väljastab selle ekraanile. Ülaltoodud faili korral:
[['P', 'P', 'P', 'P', '-', 'P'], ['-', '-', '-', '-', '-', 'P'], ['P', 'P', 'P', 'P', '-', 'P']]
Järjend on siin mitmel real illustreerimiseks, programm võib selle ühel real väljastada.
Ülemises vasakus nurgas asuva parkimiskoha koordinaadid on (0, 0), selle parempoolse naabri koordinaadid (0, 1) jne.
Seejärel küsib programm kasutajalt järjest tegevusi, kuni valitakse programmi sulgemine.
Võimalikud valikud on järgmised:
- Uus parkimine
- Kasutaja sisestab parkija nime ning parkimiskoha koordinaadid (lahendaja enda valitud viisil).
- Kui parkimiskoht on vaba, siis jäetakse sõnastikku meelde, mis koht sellele parkijale kuulub ning kahemõõtmelises järjendis muudetakse vastav koht hõivatuks.
- Kui koht on juba hõivatud või sellel kohal on sõidutee, siis teavitatakse kasutajat, et parkida ei saa. Sõnastikku ja kahemõõtmelist järjendit ei muudeta.
- Parkija asukoha leidmine
- Kasutaja sisestab parkija nime ning programm väljastab koordinaadid, kus parkija auto asub.
- Võib eeldada, et sisestatud parkija on olemas ja igal parkijal on ainult üks koht hõivatud.
- Parkimise lõpetamine
- Kasutaja sisestab parkija nime.
- Nimele vastav parkimiskoht märgitakse kahemõõtmelises järjendis vabaks ning vastav kirje kustutatakse sõnastikust.
- Võib eeldada, et sisestatud parkija on olemas.
- Parkla seisu väljastamine
- Kahemõõtmeline järjend väljastatakse ekraanile.
- Programmi töö lõpetamine
- Kahemõõtmeline järjend väljastatakse ekraanile.
- Parkimisplatsi uus seis kirjutatakse faili uus_parkla.txt
- Programm teatab töö lõpetamisest ja lõpetab töö.
Näide
Valitud on viis, kus tegevused sisestatakse nende numbrite abil ja koordinaadid sisestatakse kahekaupa koma ja tühikuga eraldatult.
[['P', 'P', 'P', 'P', '-', 'P'], ['-', '-', '-', '-', '-', 'P'], ['P', 'P', 'P', 'P', '-', 'P']] Palun valige tegevus: 1 Palun sisestage parkija nimi: Kersti Palun sisestage parkimiskoha koordinaadid: 1, 0 Sellele kohale parkida ei saa. Palun valige tegevus: 1 Palun sisestage parkija nimi: Jüri Palun sisestage parkimiskoha koordinaadid: 0, 3 Palun valige tegevus: 4 ['P', 'P', 'P', 'X', '-', 'P'], ['-', '-', '-', '-', '-', 'P'], ['P', 'P', 'P', 'P', '-', 'P']] Palun valige tegevus: 1 Palun sisestage parkija nimi: Heiki Palun sisestage parkimiskoha koordinaadid: 0, 3 Sellele kohale parkida ei saa. Palun valige tegevus: 2 Palun sisestage parkija nimi: Jüri 0, 3 Palun valige tegevus: 3 Palun sisestage parkija nimi: Jüri Palun valige tegevus: 4 [['P', 'P', 'P', 'P', '-', 'P'], ['-', '-', '-', '-', '-', 'P'], ['P', 'P', 'P', 'P', '-', 'P']] Palun valige tegevus: 1 Palun sisestage parkija nimi: Toomas Palun sisestage parkimiskoha koordinaadid: 2, 0 Palun valige tegevus: 5 [['P', 'P', 'P', 'P', '-', 'P'], ['-', '-', '-', '-', '-', 'P'], ['X', 'P', 'P', 'P', '-', 'P']] Programm kirjutas seisu faili ja lõpetas töö