TYTO POZNÁMKY SI OPRAVDU PRECTETE!
U vsech projektu se hodnotí zejména:
Forma výsledného programu:
V resení se nesmí vyskytnout zejména:
Vytvorte program, který ze souboru zadaného prostrednictvím parametru príkazového rádku precte matici celých císel ve formátu:
R S a11 a12 .... a1S a21 a22 .... a2S . . . . aR1 aR2 .... aRS
Na prvním rádku jsou rozmery matice (R - rádky, S - sloupce) a na dalsích rádcích se nachází prvky matice oddelené bílými znaky. Detekujte prípadné chyby ve vstupním souboru (neúplná matice, chybný formát císel).
Vytvorte program pro zpracování matic. Specifikace vstupních hodnot viz Vstupní data pro maticové operace.
Provedte rotaci prvku v matici podle krivky naznacené na obrázku. Rohový prvek matice oznacený teckou udává pocet, o kolik pozic se po zadané krivce posune kazdý prvek v matici. Kladný smer rotace je naznacen na obrázku, záporný smer jde opacne. Prvek, který pri rotaci vypadne na konci krivky, se presouvá na zacátek krivky (tedy do výchozího bodu). Výsledkem operace je tedy matice stejných rozmeru, v níz budou jednotlivé prvky posunuty vuci své puvodní pozici po zadané krivce.
Výslednou matici vytisknete na standardní výstup ve stejném formátu, jako vstup (tedy vcete rozmeru).
Vytvorte program pro zpracování matic. Specifikace vstupních hodnot viz Vstupní data pro maticové operace.
Krome jména souboru bude program rozumet dvema dalsím parametrum: -vertical a -horizontal. Pri zadání parametru -vertical, bude program rotovat jednotlivé sloupce zadané matice o tolik pozic, kolik udává prvek na indexu 0 v tomto sloupci. Prvky, které pri rotaci ze sloupce na jedné strane vypadnou, se objeví na druhé strane. Rotace kladným smerem znamená rotaci ve smeru shora dolu, rotace v záporném smeru znamená rotaci zdola nahoru. Pri zadání parametru -horizontal bude program fungovat podobne, ale pro rádky. Kladný smer znamená rotaci zleva doprava, záporný smer rotaci zprava doleva.
Výslednou matici vytisknete na standardní výstup ve stejném formátu, jako vstup (tedy vcetne rozmeru).
Vytvorte program pro zpracování matic. Specifikace vstupních hodnot viz Vstupní data pro maticové operace.
Nactenou matici povazujte za matici koeficientu soustavy rovnic. Vyreste tuto soustavu a vypíste na výstup vektor resení (nebo hlásení o tom, ze soustava nemá resení, ci jich má nekonecne mnoho, ...). Implemntujte alespon dve ruzné metody resení soustav rovnic. Kazdá z metod se bude zapínat jiným parametrem z príkazové rádky.
Nactete ze souboru libovolne dlouhou posloupnost anglických slov oddelených bílými znaky (nemusíte uvazovat diakritiku) do lineárního seznamu. Vyberte si libovolnou metodu razení a seznamte se s ní. Seradte nactená data a výsledek ulozte do výstupního souboru tak, ze kazdé slovo bude lezet na samostatném rádku. Zvolenou metodu razení musíte dokonale pochopit, protoze ji posléze budete prezentovat ostatním studentum.
Vstupní i výstupní soubor si uzivatel bude volit pomocí parametru príkazového rádku.
Napiste program, který bude ze souboru (zadán parametrem príkazového rádku) císt údaje o barvách ve formátech RGB a HSV (bude se prepínat pomocí parametru príkazového rádku), co rádek to jedna barva:
128 128 128 0 50 0 255 128 0 200 200 200 ...
Hodnoty jednotlivých barevných slozek budou v intervalu 0 az 255 (nutno otestovat pri ctení). Po prectení údaje o jedné barve, program vypíse do výstupního souboru (zadán parametrem príkazového rádku) slovní popis této barvy. Napríklad takto:
Sedá Tmave zelená Oranzová Svetle sedá ...
Program musí zohlednit citlivost lidského oka na jednotlivé slozky barevného spektra.
Pojmy RGB, HSV a vysvetlení citlivosti lidského oka na barvy lze najít napr. na Wikipedii.
Napiste program, který bude císt ze souboru po trojicích souradnice bodu v prostoru (jeden rádek - devet císel - 3x3 souradnice) a do výstupního souboru bude zapisovat na odpovídající rádky slova "ANO" a "NE" v závislosti na tom, zda vsechny tri body lezí nebo nelezí na stejné prímce. Pracujte s datovým typem double.
Formát vstupního souboru:
0 0 0 1 1 1 20.3 20.3 20.3 0.4 0.6 0.1 1.1 0.6 1.7 3.1 7.2 10.6 ...
Formát výstupního souboru:
ANO NE ...
Napiste program, který bude císt ze souboru po trojicích souradnice bodu na plose (jeden rádek - sest císel - 3x2 souradnice) a do výstupního souboru bude zapisovat na odpovídající rádky souradnice stredu kruznice, která je urcena tremi vstupními souradnicemi. Pokud tri vstupní body nelezí na kruznici, vypiste na výstupní rádek hodnotu konstanty NAN (not a number). Pracujte s hodnotami typu double.
Formát vstupního souboru:
0 0 1 1 20.3 20.3 0 1 1 0 0 -1 ...
Formát výstupního souboru:
# 0.00000000e00 ...
Napiste program, který bude císt ze souboru souradnice bodu na plose a na standardní výstup zapíse obvod obrazce, který je vymezen temito body. Predpokládejte, ze jsou propojeny vzdy následující body a také první a poslední - tímto je vytvoren uzavrený obrazec. Zjistete, zda jde opravdu o mnohoúhelník, tj. jestli se nekteré hrany zadané cesty nekrízí. Pokud nepujde o mnohoúhelník, vytisknete na chybový výstup chybové hlásení (jinak ne). Pracujte s datovým typem double.
Formát vstupního souboru:
0 0 1 1 20.3 20.3 0 1 1 0 0 -1 ...
Formát výstupního souboru:
123.567 V zadané ceste se krízí hrany, nejde tudíz o mnohoúhelník.
Vytvorte program, který bude mít stejný vstup, jako predchozí úloha. Program overí, ze zadaný mnohoúhelník je konvexní a pokud ano, provede triangulaci (není potreba hledat minimální triangulaci) a vypocte obsah zadaného útvaru. Výsledek vypiste na standardní výstup. Pracujte s datovým typem double.
Diagonálou konvexního N-úhelníku nazveme kazdou úsecku spojující dva jeho ruzné vrcholy, které spolu nesousedí na obvodu
Triangulací konvexního N-úhelníku oznacujeme takovou mnozinu jeho neprotínajících se diagonál, které rozdelují plochu N-úhelníku na samé trojúhelníky.
Mejme ctyri roviny v prostoru. Kazdá rovina je zadána tremi body. Zjistete, zda se vsechny tri roviny navzájem protínají a v prípade, ze ano, vypiste souradnice bodu, kde se tri roviny protínají a vypoctete povrch (prípadne i objem) takto vymezeného telesa. Body budou zadávány ze vstupního souboru (nebo stdin) pomocí 3D souradnic:
x1r1 y1r1 z1r1 x2r1 y2r1 z2r1 x3r1 y3r1 z3r1 x1r2 y1r2 z1r2 x2r2 y2r2 z2r2 x3r2 y3r2 z3r2 x1r3 y1r3 z1r3 x2r3 y2r3 z2r3 x3r3 y3r3 z3r3 x1r4 y1r4 z1r4 x2r4 y2r4 z2r4 x3r4 y3r4 z3r4
Výsledek vypisujte na standardní výstup. Pracujte s datovým typem double.
Vytvorte program, který overí, jestli je zadaná matice resením obecného sudoku. Specifikace vstupních hodnot viz Vstupní data pro maticové operace. Výsledek zapiste na standardní výstup.
Klasické sudoku je tvoreno maticí rozmeru 9x9, která je rozdelena na 9 submatic o rozmerech 3x3. Resením klasického sudoku je taková matice, ve které se mohou vyskytovat hodnoty 1 az 9 a to tak, ze se kazdá císlice vyskytuje práve jednou ve svém rádku, ve svém sloupci i ve své submatici.
Hru sudoku lze zobecnit tak, ze prohlásíme klasické sudoku za sudoku rádu 3. Obecné sudoku rádu N (N je prirozené císlo > 0) je tvoreno maticí N2xN2, která je rozdelena na N2 submatic o rozmerech NxN, a ve které se mohou vyskytovat pouze hodnoty z intervalu 1 az N2.
Vytvorte program, který zasifruje vstupní soubor tímto zpusobem:
Kazdý znak vstupního souboru se sloucí pomocí operace XOR se znakem klíce na odpovídající pozici. Následne se v celém tomto souboru provede kruhový posuv o N bitu doprava tak, ze bity ze znaku vlevo pretecou do znaku vpravo a bity z posledního znaku pretecou do prvního znaku v souboru.
Program si nacte z príkazového rádku název souboru, který má zasifrovat, název souboru, do kterého se má ulozit výsledek a heslo(klíc). Hodnota N se vypocítá z klíce jako soucet vsech znaku klíce modulo 11. Sifrování se bude zapínat prepínacem -s a desifrování se bude zapínat prepínacem -d. Zamyslete se nad silou tohoto zpusobu sifrování dat. Jakým zpusobem by slo tuto sifru zdolat? (Muzete naprogramovat.)
Vytvorte program, který provede zasifrování vstupního souboru pomocí steganografie do bitmapového obrázku. Klícem bude samotný bitmapový obrázek.
Jméno sifrovaného souboru a obrázek zadávejte pomocí parametru príkazové rádky. Sifrování se bude zapínat prepínacem -s a desifrování se bude zapínat prepínacem -d. Zamyslete se nad silou tohoto zpusobu sifrování dat.
V jazyce C neexistuje datový typ mnozina jako v Pascalu. Úkolem je implementace abtraktního datového typu mnozina podle Pascalovského vzoru (vyuzití vsech bitu promenné/pole). Tento abstraktní datový typ pouzijte pro resení následující úlohy:
Ve vstupním textovém souboru zjistete, které znaky jsou spolecné pro N-tice po sobe jdoucích rádku. Parametr N zadávejte z príkazové rádky programu. Znaky spolecné pro kazdou N-tici vypisujte do výstupního souboru na zvlástní rádek (pokud N=5 a soubor má 18 rádku, pak ve výstupním souboru budou 4 rádky, odpovídající kazdé z N-tic, kde poslední N-tice bude neúplná).
Poslední modifikace: 15. December 2008. Pokud v tomto dokumentu narazíte na chybu, dejte mi prosím vedet.