| Funkce | Body |
|---|---|
| Správné načtení hodnot a ošetření vstupu před nesprávnými hodnotami (řetězec místo čísla apod.) | 1 |
Správné zobrazení výsledku (sčítance oddělené znaky + a -,
případně text NELZE) |
1 |
| Spravné řešení mezních čísel: -23456789,-23456788,123456789,123456790,65536,-65536 | 2 |
| Zobrazení správných výsledků čísel: 17,8,0,-21,11,159,-121 | 1 |
| Zobrazení NELZE pro 160, -122 | 1 |
| Automatické vyloučení čísel nad ±123456789 | 1 |
| Nepoužívá se backtracking, ale prohledávání v cyklu | 1 |
| Heuristika pro vynechání některých nemožných kombinací | 1 |
| Funkce | Body |
|---|---|
| Zformátování kalendáře do tabulky | 1 |
| Tlačítka pro pohodlný přechod mezi měsíci | 1 |
| Možnost výběru roku | 1 |
| Správné zobrazení února 2000 (obsahuje úterý 29. únor) | 1 |
| Správné zobrazení února 1980 (obsahuje úterý 29. únor) | 1 |
| Správné zobrazení srpna 2011 (1. srpna je pondělí) | 1 |
| Program pro zjištění dnů v daném měsící využívá systémové funkce pro práci s datem a časem | 2 |
| Použití již hotové komponenty ve vývojovém prostředí | 1 |
| Funkce | Body |
|---|---|
| Možnost zvolení počtu kotoučů, grafické zobrazení kotoučů a kolíků | 1 |
| Uživatel může přesouvat kotouče a nemůže přitom porušit pravidla (položit větší kotouč na menší) | 1 |
| Rozpoznání koncového stavu a zobrazení počtu tahů | 1 |
| Automatické vyřešení úlohy pro 3,5 a 9 kotoučů | po jednom bodu (celkem 3) |
| Použití metody rozděl a panuj (převedení na jednoduší úlohu a její řešení pomocí rekurzivního volání). Body se nedávají za tupé použití backtrackingu. | 3 |
| Funkce | Body |
|---|---|
| Ošetření vstupu | 1 |
| pro 5! vrací 1 | 1 |
| pro 333! vrací 81 | 1 |
| pro 2001! vrací 499 | 1 |
| pro 32768! vrací 8189 | 1 |
| pro 1234567890! vrací 308641968 | 1 |
| Program se nesnaží spočítat hodnotu faktoriálu, ale počet nul odvodí z počtu dvojek a pětek v provočíselném rozkladu čísla n! | 1 |
| Program používá asi nejefektivnější metodu (viz přiložený program) -- zjišťuje počet pětek a jejich mocnin v prvočíselném rozkladu | 2 |
Body za správný výpočet přidělte pouze v případě, že výsledku se program dopočítá do 5 sekund.
#include <iostream.h>
void main()
{
long n = 0;
long pocet = 0;
long delitel = 5;
while ((n<1) || (n>2000000000))
{
cout << "Zadejte cislo od 1 do 2000000000: ";
cin >> n;
}
while (delitel <= n)
{
pocet += n / delitel;
delitel *= 5;
}
cout << "Cislo " << n << "! ma na konci " << pocet << " nul."
<< endl;
}
| Funkce | Body |
|---|---|
| Kontrola, zda souřadnice tvoří trojúhelník a leží v zadaných mezích | 1 |
| Souřadnice lze zadat interaktivně (např. pomocí myši) | 1 |
| Správné zobrazení trojúhelníku uvnitř jiného trojúhelníku | 1 |
| Správné zobrazení nepřekrývajících se trojůhelníků | 1 |
| Správné zobrazení průniku částečně se překrývajících trojúhelníků | 1 |
| Pro jednotlivé trojúhelníky, jejich rozdíl a průnik se používají různé barvy | 1 |
| Průsečíky stran a pozice trojúhelníků se spočítají analyticky | 2 |
| Průnik trojúhelníků se určí průchodem řádek po řádku | 1 |
Ve všech úlohách se hodnotí dokumentace podle následujícího klíče:
| Vhodně zvolené názvy proměnných | 0,25 |
| Přehledně odsazovaný zdrojový text | 0,25 |
| Komentáře ve vhodné míře | 0,25 |
| Uživatelská dokumentace a nápověda v programu | 0,25 |