Najneskorší termín odovzdania: 19.10.2014 (nedeľa) o 21:00
Odovzdávaný súbor: ZadanaKorytnacka.java
Cieľom tejto sady domácich zadaní je vytvoriť triedu ZadanaKorytnacka
, ktorá rozširuje triedu Turtle
a ktorá obsahuje nižšie predpísané metódy.
Doplňujúce požiadavky:
Naučte korytnačky triedy ZadanaKorytnacka
metódu veternik
, ktorá nakreslí obrazec, ako je to na obrázku nižšie. Veterník sa skladá zo 4 pravouhlých trojuholníkov, ktorých odvesny majú rovnakú dĺžku. Metóda má len jeden parameter rozmer
určujúci dĺžku odvesien týchto trojuholníkov. Korytnačka sa na začiatku aj konci metódy nachádza v strede veterníka a natočená je v smere odvesny jedného z trojuholníkov.
Trojuholníky tvoriace veterník sú vyfarbené postupne sa striedajúcimi čiernymi a červenými pásmi. Šírka prvého (čierneho) pásu je 1/3
výšky odvesny trojuholníka, šírka druhého (červeného) pásu a každého ďalšieho pásu je 2/3
šírky predošlého pásu. Pásy, resp. trojuholníky, ktoré nebude vidieť, nekreslite.
Rady:
pravouholnik
, ktorá nakreslí vyplnený pravouhlý trojuholník s odvesnami rovnakej dĺžky. Dĺžka týchto odvesien je zadaná parametrom dlzkaOdvesny
a ako farba výplne sa použije aktuálne nastavená farba výplne. Navyše korytnačka sa na začiatku a na konci nachádza vo vrchole trojuholníka, v ktorom nie je pravý uhol a je natočená v smere odvesny.
pravouholnik
naprogramujte metódu ccPravouholnik
, ktorá nakreslí pravouholník s farebnými pruhmi (jeden z trojuholníkov veterníka).
Cieľom jednej z úloh, ktorá sa riešila na 3. prednáške, bolo pre zadané kladné nenulové číslo n
určiť počet jeho deliteľov. Na prednáške bol prezentovaný jednoduchý algoritmus založený na testovaní všetkých celých čísel od 1
po n
. Zároveň na prednáške bolo naznačené, že si vystačíme aj s testovaním menšieho počtu čísel - konkrétne √n
čísel. Ako však na to?
Uvažujme číslo n
. Nech a
je nejakým deliteľom čísla n
. Potom musí existovať také celé číslo b
, že n = a.b
. Teda číslo b
je taktiež deliteľom čísla n
. Na tieto 2 delitele čísla n
môžeme pozerať ako na akési "kamarátske" delitele čísla n
. Bez ujmy na všeobecnosti nech a <= b
. Ak a
nie je √n
, potom platí, že a < √n
a b > √n
(dôkaz sporom - ak by a < √n
a b < √n
, potom a.b < √n.√n = n
, čo je v spore, že a.b = n
; analogicky možno dokázať, že nenastane a > √n
a b > √n
). Dôsledkom tohto pozorovania je to, že ku každému deliteľovi ostro menšiemu ako √n
prislúcha jeden deliteľ ostro väčší ako √n
a naopak.
Na základe popísanej myšlienky naprogramujte metódu počet deliteľov tak, aby netestovala viac ako √n
čísel.
Naučte korytnačky triedy ZadanaKorytnacka
metódu kombinovaneCislo
. Táto metóda dostane ako parametre dve nezáporné čísla typu int
a vráti nové číslo typu int
, v ktorom na každej pozícii bude väčšia z cifier na tejto pozícii v parametrami zadaných číslach. Teda ak v prvom čísle je na mieste jednotiek cifra 5 a v druhom je na mieste jednotiek cifra 3, tak vo výslednom čísle bude na mieste jednotiek cifra 5. Ak sa počet cifier v zadaných číslach líši, tak pred číslo s menším počtom cifier si "domyslite" cifry 0. Uvažujeme zápis čísel v desiatkovej sústave.
Príklady:
kombinovaneCislo(258,164) = 268
kombinovaneCislo(25, 2419) = 2429
(namiesto 25 uvažujeme číslo so zápisom 0025)
Nech A(n) = 1/n
, ak n > 0
je párne, a A(n) = (n-1)/n
, ak n > 0
je nepárne. O nekonečnom číselnom rade A(1) + A(2) + A(3) + ... + A(n) + ...
je známe, že diverguje (ak neviete, čo to znamená, dozviete sa na nejakej matematike). Naučte korytnačky triedy ZadanaKorytnacka
metódu, ktorá pre zadané kladné reálne číslo c
vráti najmenšie také číslo n
, že A(1) + A(2) + ... + A(n) >= c
.