IJC DU 1

Podobně jako v prvním semestru v předmětu IZP, tak i ve druhém si do skladiště schovávám vypracování projektů. Třeba se ještě někdy budou hodit :-)

Modul pro práci s výčtovým typem

V této části jsme měli vytvořit modul, který bude zprostředkovávat běžné operace (čtení ze vstupu, výpis na výstup) nad výčtovým typem. Konkrétně šlo o dny v týdnu. Formáty byly čtyři: krátký bez diakritiky „Ct“, krátký s diakritikou „Čt“, dlouhý bez diakritiky „Ctvrtek“ a konečně dlouhý s diakritikou „Čtvrtek“. Funkce načítající ze vstupu musela umět rozpoznat všechny platné formáty a samozřejmě ošetřit cokoliv co by mohlo způsobit problémy.

Modul pro výpis chyb

Zde šlo především o to, prakticky si vyzkoušet napsat funkci s proměnným počtem parametrů. Naše funkce měla mít stejnou funkčnost jako printf, pouze hlášku uvozovala textem „CHYBA“ a posílala na stderr. Samotná implementace byla triviální, asi tak na 10 řádků.

Enumtest

Speciální předem zadaná program, testující správnou funkčnost modulu pro chyby a pro práci s enum typem. Jediná práce k tomuto potřebná bylo správné nadefinování závislostí v makefile.

Erathostenovo síto aneb prvočísla a makra

Toto byla nejzajímavější část celého projektu. Úkolem bylo najít nejvyšší prvočíslo nižší než 90.000.000, přičemž program měl běžet nanejvýš dvě sekundy. Implementace musela být pomocí bitového pole (vlastní výroby) a maker nad ním. Algoritmus Erathostenova síta je velice jednoduchý, ale má opravdu velké rezervy co se optimalizace týče. Přestože mi nejdříve výpočet trval i 10s, ve finále jsem se dostal pod hranici jedné sekundy. Jde jenom o to, dobře si promyslet, která čísla je nutné testovat a která už automaticky vypadnou z výběru, pak to jde snadno :-)

Celkově hodnotím první projekt jako zahřívací. S makry jsem si vyhrál (každá desetina sekundy se počítala :) ) ), ale zbytek byla absolutní nuda. Tak či tak mi bylo odměnou příjemných 15 bodů z 15 možných.

Celý balíček si můžete stáhnout zde.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">