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 ;cislo veze, ktora nasleduje urob "b prvok 2 :x ;vyska veze, ktora nasleduje urob "bv prvok :b :vysky 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 :durob "x bezprveho :x urob "miesta :miesta-1 ] pis :spolu koniec
Najčastejšie chyby
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |