ITI0011:harjutus 04

Allikas: Kursused
Redaktsioon seisuga 13. veebruar 2016, kell 10:56 kasutajalt Ago (arutelu | kaastöö)
Mine navigeerimisribale Mine otsikasti

Üldine

Tähtaeg: 17. - 19. veebruar 2016 Kausta nimi gitis: EX04

Ülesanne

Marko ja Triin istuvad diivanil ja mõtlevad, et pole tükk aega üksteise võimeid proovile pannud. Nimelt on mõlemad head matemaatikud ja pole tükk aega üksteisega võistelnud. Niisiis pakkus Marko välja, et ta suudab suvalises N x M maatriksis leida keskmiselt 3 pakkumisega punkti (X, Y), millele Triin mõtleb, kui Triin ütleb ühe punkti (X1, Y1) pakkumisel selle eukleidilise kauguse punktist (X, Y). Triinule idee meeldis ning otsustas kirjutada abistava programmi, et välja selgitada, kas Markol on õigus. Ta implementeeris järgnevad abistavad funktsioonid

char[][] createMatrix(int n, int m, int x, int y) - Teeb valmis n realise ja m tulbalise maatriksi, kus '.' tähistab tühja kohta ja 'x' Triinu mõeldud punkti. Võib eeldada, et sisendid on alati kontrollitud.

[['x', '.', '.'],
['.', '.', '.'],
['.', '.', '.']]

kui n = 3, m = 3, x = 0, y = 0


double guess(char[][] matrix, int x, int y) - Tagastab kauguse algselt valitud (X0,Y0) punkti ja proovitud punkti (x, y) vahel ja märgistab proovitud punkti sümboliga '*'. Kaugus x,y ja algse punkti X0, Y0 vahel tuleb arvutada kasutades Pythagorase teoreemi (https://et.wikipedia.org/wiki/Pythagorase_teoreem). Korduval proovimisel käituda samamoodi nagu esmakordselgi. Võib eeldada, et sisendid on alati kontrollitud. String getAsciiMatrix(char[][] matrix) - tagastab maatriksi sisu ascii kujul. Näiteks näide 1 puhul oleks tagastatav väärtus:

"...
...
..."

(Unix-style line endings \n) Kui punkti on juba pakutud, siis peab see olema asendatud sümboliga '*' ehk pärast shoot(matrix, 1, 1) puhul oleks näite 1 kaart:

"...
...
..."

(Unix-style line endings \n) Ka mõeldud punkti näidatakse kaardil '.'.

Kasutades ülalolevaid funktsioone komplekteeris Triin programmi, mis küsib N, M, X, Y väärtused ja lubab pakkuda suvalisi punkte kujul x,y öeldes selle kauguse ja printides välja praeguse kaardi. Kahjuks unustas ta git'i üles laadida abistavad funktsioonid createMatrix, guess, getAsciiMatrix, kas aitaksid tal need uuesti kirjutada?