Autorské riešenie Úlohu si rozdelíme na niekoľko častí. Najprv je potrebné vytvoriť si premenné, s ktorými budeme pracovať, sú to výšky veží a vzdialenosti veží. viem start
urob "dlzky [ [0 50 110 60 30 70 20]
[50 0 60 110 60 60 30]
[110 60 0 50 80 40 90]
[60 110 50 0 50 50 80]
[30 60 80 50 0 40 30]
[70 60 40 50 40 0 50]
[20 30 90 80 30 50 0]
]
urob "vysky [100 80 130 40 50 70 0]
koniecĎalej potrebujeme vypočítať vzdialenosť medzi vežami
Na tento výpočet použijeme procedúru s troma parametrami, a to výšku prvej veže, výšku druhej veže a vzdialenosť medzi vežami. Vzdialenosť z jednej veže na druhú vypočítame pomocou Pytagorovej vety. Procedúra vyzerá takto: viem vzdialenost :vyska1 :vyska2 :vzdialenost urob "vzd sqrt((abs(:vyska1-:vyska2))*(abs(:vyska1-:vyska2))+ :vzdialenost*:vzdialenost) vysledok :vzd koniec Procedúra nám bude vracať číslo, ktoré predstavuje vzdialenosť medzi vežami. S týmto číslom budeme pracovať v procedúre počítaj. Vstup procedúry počítaj je zoznam čísel.
Ďalej v cykle kým miesta>1 budeme počítať vzdialenosť prvej a druhej veže zo zoznamu. Na konci cyklu sa prvá veža vynechá zo zoznamu a všetky ostatné sa posunú o jedno dopredu. Zo zoznamu vyberieme prvú vežu a výšku prvej veže ;cislo prvej veze urob "a prvok 1 :x ;vyska prvej veze urob "av prvok :a :vysky ďalej vyberieme druhú vežu a výšku druhej veže
vzdušnú vzdialenosť dvoch veží dostaneme pomocou príkazov ;vzdialenost dvoch miest urob "d prvok :b prvok :a :dlzka z týchto premenných ideme vypočítať vzdialenosť medzi vežami a to tak, že zavoláme procedúru vzdialenosť s parametrami av, bv a d. To čo nám vráti procedúra vzdialenosť pripočítame do premennej spolu. Celá procedúra vyzerá takto: viem pocitaj :x urob "x vlozprvy 7 :x urob "x vlozposledny 7 :x urob "miesta pocet :x urob "spolu 0kym [:miesta>1] [ ;cislo prvej veze urob "a prvok 1 :x ;vyska prvej veze urob "av prvok :a :vysky ;cislo veze, ktora nasleduje urob "b prvok 2 :x ;vyska veze, ktora nasleduje urob "bv prvok :b :vysky;vzdialenost dvoch miest urob "d prvok :b prvok :a :dlzka ;spolu vzdialenost, co zatial nalietal Drago urob "spolu :spolu + vzdialenost :av :bv :d
Najčastejšie chyby
|
||||||||||
|
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk | ||||||||||