Zdroj: http://www.fit.vutbr.cz



Podobné dokumenty
Maticové operace projekt č. 3

Projektč.3dopředmětuIZP. Maticové operace

3. Matice a determinanty

Základy programování (IZP)

Determinant. Definice determinantu. Permutace. Permutace, vlastnosti. Definice: Necht A = (a i,j ) R n,n je čtvercová matice.

Sbírka příkladů. verze

Semestrální projekt. Předmět: Programování v jazyce C. Zadání: Operace s maticemi. Uživatelský manuál. ver. 1.0

předmětu MATEMATIKA B 1

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

Matice. Přednáška MATEMATIKA č. 2. Jiří Neubauer. Katedra ekonometrie FEM UO Brno kancelář 69a, tel

Lenka Zalabová. Ústav matematiky a biomatematiky, Přírodovědecká fakulta, Jihočeská univerzita. zima 2012

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

ÚSTAV ORGANICKÉ TECHNOLOGIE

Zapisovač nemá síťový vypínač a zapne se připojením síťové šnůry na zdroj napájení.

5 Rekurze a zásobník. Rekurzivní volání metody

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016

1. LINEÁRNÍ ALGEBRA Vektory Operace s vektory... 8 Úlohy k samostatnému řešení... 8

Úvod do programování. Lekce 7

II. Úlohy na vložené cykly a podprogramy

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Šifrování/Dešifrování s použitím hesla

Programování v C++, 2. cvičení

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

přirozený algoritmus seřadí prvky 1,3,2,8,9,7 a prvky 4,5,6 nechává Metody řazení se dělí:

Základy programování (IZP)

PROGRAMOVÁNÍ. Cílem předmětu Programování je seznámit posluchače se způsoby, jak algoritmizovat základní programátorské techniky.

MANUÁL K OVLÁDÁNÍ POČÍTAČOVÉHO SYSTÉMU PRO KMENOVÉ PÁSOVÉ PILY

2.2. SČÍTÁNÍ A NÁSOBENÍ MATIC

Informatika pro moderní fyziky (2) základy Ruby, zpracování textu

Základní škola Moravský Beroun, okres Olomouc

Skalár- veličina určená jedním číselným údajem čas, hmotnost (porovnej životní úroveň, hospodaření firmy, naše poloha podle GPS )

ABSOLVENT NÁVOD PRO STUDIJNÍ REFERENTKY KARVINÁ, Tisk: :15

Návrh Designu: Radek Mařík

Regulární matice. Věnujeme dále pozornost zejména čtvercovým maticím.

A - TECHNICKÁ ZPRÁVA

Operace s maticemi. 19. února 2018

Algoritmizace prostorových úloh

5. Maticová algebra, typy matic, inverzní matice, determinant.


Elektronická dokumentace - LATEX. Maticové operace

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

X37SGS Signály a systémy

Několik poznámek na téma lineární algebry pro studenty fyzikální chemie

Soustavy lineárních rovnic

KTE / PPEL Počítačová podpora v elektrotechnice

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Program je určen pro děti se specifickými poruchami učení.

SPIRIT Nové funkce. SOFTconsult spol. s r. o., Praha

NALG 001 Lineární algebra a geometrie 1, zimní semestr MFF UK Doba řešení: 3 hodiny

Alfanumerické displeje

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Aritmetika s velkými čísly na čipové kartě

Zadání soutěžních úloh

ISPOP 2016 MANUÁL K VYPLNĚNÍ FORMULÁŘŮ PRO OHLAŠOVÁNÍ ÚDAJŮ PRO VODNÍ BILANCI

59. ročník Matematické olympiády 2009/2010

MINISTERSTVO ŠKOLSTVÍ, MLÁDEŽE A TĚLOVÝCHOVY. Učební osnova předmětu MATEMATIKA. pro studijní obory SOŠ a SOU (13 15 hodin týdně celkem)

Základy programování (IZP)

Matice se v některých publikacích uvádějí v hranatých závorkách, v jiných v kulatých závorkách. My se budeme držet zápisu s kulatými závorkami.

1 Projekce a projektory

Logické proměnné a logické funkce

SEZNÁMENÍ S PROGRAMEM

Euklidovský prostor Stručnější verze

8. Posloupnosti, vektory a matice

Dynamické programování UIN009 Efektivní algoritmy 1

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

Implementace numerických metod v jazyce C a Python

MT201. 0LQLDWXUQtSURJUDPRYDWHOQêWHUPLQiO 8åLYDWHOVNiStUXþND 070,1,$7851Ë7(50,1È/VWUDQ

Algoritmy a datové struktury

Principy operačních systémů. Lekce 6: Synchronizace procesů

13. Třídící algoritmy a násobení matic

Zada ní 1. Semina rní pra ce z pr edme tu Matematický software (KI/MSW)

Textury v real-time grafice Josef Pelikán, MFF UK Praha Josef.Pelikan@mff.cuni.cz

Téma: Arkanoid. X36SOJ Strojově orientované jazyky Semestrální práce. Vypracoval: Marek Handl Datum: červen 2006

Toto zadání je podepsané děkanem a vedoucím katedry, po obhajobě).

Učební texty k státní bakalářské zkoušce Matematika Matice. študenti MFF 15. augusta 2008

Gymnázium, Brno. Matice. Závěrečná maturitní práce. Jakub Juránek 4.A Školní rok 2010/11

2. úkol MI-PAA. Jan Jůna (junajan)

PB přednáška (26. října 2015)

Algoritmizace prostorových úloh

VŠFS B_UPg Úvod do programování: Sbírka příkladů na cvičení RNDr. Jan Lánský, Ph.D.

Pracovní list č. 1 - Šumava a Lipenská přehrada

Střední škola informačních technologií a sociální péče, Brno, Purkyňova 97. Vybrané části Excelu. Ing. Petr Adamec

MRAR-L. Družicové navigační systémy. Č. úlohy 4 ZADÁNÍ ROZBOR

Základy programování (IZP)

FAKULTA STAVEBNÍ VUT V BRNĚ PŘIJÍMACÍ ŘÍZENÍ PRO AKADEMICKÝ ROK


. Určete hodnotu neznámé x tak, aby

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Grafická data jsou u 2D vektorové grafiky uložena ve voxelech NEPRAVDA Grafická data jsou u rastrové grafiky uložena v pixelech PRAVDA Grafická data

MAPA ŠKOLY PRO ZŠ 2015 SOUHRNNÉ VÝSLEDKY PRO RODIČE

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

OBSAH. ÚVOD...5 O Advance CADu...5 Kde nalézt informace...5 Použitím Online nápovědy...5. INSTALACE...6 Systémové požadavky...6 Začátek instalace...

Vzdělávací oblast: Matematika a její aplikace Vyučovací předmět: Matematika Ročník: 5.

Zadání soutěžních úloh

PPEL_4_cviceni_MATLAB.txt. % 4. cvičení z předmětu PPEL - MATLAB. % Lenka Šroubová, ZČU, FEL, KTE %

MATEMATIKA vyšší úroveň obtížnosti

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Zdrojem většiny příkladů je sbírka úloh 1. cvičení ( ) 2. cvičení ( )

VISUAL BASIC. Práce se soubory

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Transkript:

Zdroj: http://www.fit.vutbr.cz Motivace Cílem této úlohy je zopakovat si nebo se naučit vytváření obecných řešení, která na rozdíl od ad hoc řešení umožňují zvládat složitější úlohy bez nadměrného úsilí, zapojit prostorovou představivost a abstraktní myšlení, než začnete programovat, základní matematické operace s maticemi, práci s vícerozměrnými poli, práci s dynamicky alokovanou pamětí, načítání dat ze souborů ošetřování problémů, které mohou nastat při práci se soubory. Zadání úlohy Napište program, který bude provádět operace s maticemi obecných rozměrů obsahující celá čísla (použijte datový typ int). Program musí ošetřit situace, kdy matice nemají pro operaci vhodné rozměry nebo jiné vlastnosti dané podstatou operací. Implementujte tyto operace: Matematické operace: Kontrola vstupních dat Součet matic (A+B) Součin matic (A*B) Transpozice matice (A T ) Maticový výraz (A*B T +A) Prostorové operace: Označení vodního toku Cesta koule po kulečníku Před programováním se zamyslete nad mezními stavy těchto operací (různé rozměry matic, různé hodnoty prvků,...). Zvláštní pozornost věnujte analýze problému násobení matic a zvolených operací. Formát souborů s maticemi Matice pro všechny operace budou uloženy v textovém souboru (každá matice v jednom souboru). Na začátku každého souboru budou dvě hodnoty s významem počet_řádků počet_sloupců v tomto pořadí. Každý řádek matice bude odpovídat jednomu řádku v souboru. Není chybou, pokud mezi hodnotami bude více mezer. Na konci souboru může být prázdný řádek (pro zjednodušení). Tento formát je společný pro vstup i pro výstup. U vstupních souborů není potřeba kontrolovat formátování (řádkování, mezery), výstupní soubory musí této specifikaci vyhovovat co nejpřesněji. 5 7 Příklad matice o pěti řádcích a sedmi sloupcích:

1 2 3 4 3 2 1 2 3 4 5 4 3 2 3 4 5 10 5 4 3 2 3 4 5 4 3 2 1 2 3 4 3 2 1 Bližší specifikace Označení vodního toku Cílem úkolu je na mapě označit vodní tok. Vstupem je výškový model v podobě šestiúhelníkové mapy a souřadnice pramene vodního toku. Výstupem je matice reprezentující mapu vodního toku. Šestiúhelníková mapa Šestiúhelníková mapa je dána maticí, ve které řádky představují horizontálně sousedící šestiúhelníky a sloupce představují šestiúhelníky sousedící střídavě jihovýchodním a jihozápadním směrem. Například matice o velikosti 5 řádků a 4 sloupců reprezentuje následující mapu (modrou čarou je znázorněn řádek 1, červenou čarou sloupec 2): První zadaný prvek matice představuje hodnotu šestiúhelníku označeného indexy 0,0; následující prvek je hodnota šestiúhelníku 0,1 atd. Chování vodního toku ve výškovém modelu Hodnota každého prvku matice představuje nadmořskou výšku dané šestiúhelníkové plochy terénu. Každý šestiúhelník, kterým protíká voda, bude označen jako vodní tok (ve výstupní matici bude mít hodnotu 0). Šestiúhelník, kterým voda neprotíká, bude označen jako pevná zem (ve výstupní matici bude mít hodnotu 1). Vodní tok si při rozlévání vybírá sousední šestiúhelník s nejmenší nadmořskou výškou. Pokud šestiúhelník sousedí se dvěma nebo více šestiúhelníky, které mají stejnou minimální nadmořskou výškou, voda se rozleje do všech takových sousedů. Pokud šestiúhelník sousedí pouze s šestiúhelníky s větší nadmořskou výškou, voda se dál nerozlévá.

Příklad: Při zadaném výškovém modelu maticí: 5 4 2 3 3 3 2 5 4 4 2 3 5 4 3 4 3 4 5 3 3 4 a souřadnicí vodního pramene 2,2 se vodní tok rozleje do modře označených šestiúhelníku: Na výstupu programu bude vypsána matice: 5 4 0 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 Cesta koule po kulečníku Vstupem je matice reprezentující šestiúhelníkovou mapu představující plochu hypotetického kulečníkového stolu (šestiúhelníková mapa je principiálně stejná, jako u předchozí operace vodního toku). Řádky matice představují horizontálně sousedící šestiúhelníky, sloupce vstupní matice představují šestiúhelníky sousedící střídavě jihovýchodním a jihozápadním směrem. Navíc k mapě kulečníku je vstupními parametry programu dána počáteční pozice (souřadnice) kulečníkové koule, směr a síla jejího odpalu. Směr odpalu je zadán jedním z šesti řetězců: V, JV, JZ, Z, SZ, SV (tj. východní směr, jihovýchodní, jihozápadní, západní, severozápadní a severovýchodní). Síla odpalu je celé číslo vyjadřující délku cesty v počtu šestiúhelníků, kterými koule putuje. Výstupem programu je posloupnost hodnot šestiúhelníků, po kterých se koule pohybuje. Posloupnost vypisujte na jediný řádek, hodnoty oddělujte jednou mezerou. Při pohybu za normálních okolností udržuje koule stejný směr. V případě, že koule narazí na okraj mapy, změní patřičným způsobem směr pohybu. V šestiúhelníkové mapě mohou nastat čtyři typy odrazů naznačených na následujícím obrázku:

Příklad: Při spuštění s následující maticí, počáteční pozicí kulečníkové koule "3,0", směrem odpalu "JZ" a sílou odpalu 11 bude trasa koule následující: 1 2 1 3 2-6 1 2 1 4 3 Specifikace parametrů Program při jednom spuštění provede jedinou operaci, která bude zadána parametrem podle následující tabulky. Operace Parametry Popis Váha při hodnocení Nápověda proj3 -h Vytiskne nápovědu k použití programu. Testovací výstup proj3 --test data.txt Pouze zkontroluje, zda jsou data ve vstupním souboru ve správném formátu a správně naformátovanou strukturu opět vytiskne na standardní výstup. 1%

Operace Parametry Popis Váha při hodnocení Součet dvou matic proj3 --add A.txt B.txt Vypočte součet dvou matic v daném pořadí (A+B) a ošetří případné chyby. 9% Součin dvou matic proj3 --mult A.txt B.txt Vypočte součin dvou matic v daném pořadí (A*B) a ošetří případné chyby. 10% Transpozice matice proj3 --trans A.txt Vypočte transpozici matice A a ošetří případné chyby. 10% Maticový výraz A*B T +A proj3 --expr A.txt B.txt Vypočte maticový výraz (A*B T +A) a ošetří případné chyby. 10% Vodní tok proj3 --water r s M.txt Označí hladinu vodního toku v matici M pramenící na souřadnici r,s (řádek,sloupec). 30% Kulečník proj3 --carom r s dir power M.txt Sleduje cestu kulečníkové koule po stole M. r a s - souřadnice koule r,s (řádek,sloupec) dir - směr koule (V, JV, JZ,...) power - celočíselně zadaná síla úderu 30% Poznámka: Program musí umět zpracovat soubory s libovolnými jmény. Formát výstupních dat Výstup každé operace se bude provádět na standardní výstup (stdout). Chybové zprávy se budou vypisovat na standardní chybový výstup (stderr). Pokud je výsledkem operace matice, bude vypsána ve stejném formátu jako vstup (tedy včetně rozměrů, aby šlo použít výsledek opět jako vstup programu). Pokud operace nemá legální výsledek, vypište na standardní výstup false. V tomto případě nevypisujte chybové hlášení. Maximální počet získaných bodů Za tuto úlohu lze získat až 10 bodů. Součástí řešení není dokumentace.

Prémie Lze získat prémiový bod za implementaci rozšíření. Například: řešení vodního toku bez použití rekurze, další zajímavé a netriviální (smysluplné) operace s maticí(cemi): determinant, zvětšení/zmenšení rozlišení (jako u obrázků),... vizualizace operací na obrazovce (možno i jako doplňkový program využívající výstup tohoto programu) Výjimečně dobrý návrh celé aplikace.... Co se zejména hodnotí V této úloze se zejména hodnotí: Správnost implementace zvolených operací. Kvalita (tedy i efektivita) a správnost algoritmů pro práci s poli. Bude se zejména hlídat překročení rozsahu pole. Kvalita návrhu datových struktur a práce s nimi. Správná práce s dynamickými datovými typy. Správná práce se soubory. Pomůcka Pracujte s dynamicky alokovanými poli. Většina chyb pak způsobí pád aplikace, což je výhodné pro ladění. U jiného typu alokace nelze ošetřit nedostatek paměti! Překročení rozsahu pole a jiné chyby lze v dynamickém poli ohlídat pomocí programu valgrind. Tip: Zkuste svůj program otestovat například takto: $./proj3 --mult m1.txt m2.txt > m12.txt $./proj3 --mult m2.txt m3.txt > m23.txt $./proj3 --mult m12.txt m23.txt > m1223.txt Výstup vašeho programu musí jít bez úprav použít opět na vstupu. Poslední modifikace: 27. listopadu 2011.