Zadání úlohy třídění dat
Sledujte tento soubor – bude dále upravován/upřesňován
Napište algoritmy realizující
zadanou metodu třídění. Tříděná data načtěte ze souboru na disku (v
soubor_vstup)
a po setřídění je na disk uložte (do souboru soubor_vystup).
Program
sort.exe bude
požadovat tři parametry zadané z příkazové řádky ve tvaru:
sort.exe --type=kod_řazení soubor_vstup soubor_vystup
Parametr kod_řazení bude zadán jako číslice od nuly do 6 reprezentující typ třídění:
0 |
neřadí (pouze načte a uloží data ve stejném pořadí do výstupního souboru – implementují všichni) |
1 |
select sort |
2 |
bubble sort |
3 |
insert sort |
4 |
shell sort |
5 |
merge sort |
6 |
quick sort |
Pokud je daný typ třídění implementován (je vytvořen v rámci práce) je provedeno setřídění a uložení výsledku. V případě, že typ není implementován, vytiskne se chybové hlášení a vrátí se chybový kód 100.
Pro manipulaci s daty budou funkce využívat povinně parametry typu struktura TData. Struktury budou obsahovat vstupní a výstupní data. Pro pole číselných dat je ve struktuře TData ukazatel iValue, Délka pole je ve struktuře TData uložena v proměnné iSize. Data jsou dynamicky alokovaná.
Pro načtení a uložení dat napište funkce, které budou umístěny v samostatném zdrojovém souboru datafile.c, jiném než je funkce main. Upravte příslušný hlavičkový soubor datafile.h, který standardně ošetřete proti vícenásobnému načítání. Na začátek hlavičkového souboru vložte komentář obsahující položky: Autor jméno, Autor ID, Datum odevzdání, Název práce, URL zadání práce. Pro třídění napište soubor datasort.c s hlavičkovým souborem datasort.h.
Jako základ práce použijte přiložené soubory.
Pro kontrolu práce se soubory a pamětí využijte knihovnu check (check.cpp, check.h).
Formát vstupních dat je dán následující tabulkou. Formát výstupních dat bude stejný jako formát vstupních dat.
Předposlední číslice ID |
Formát dat |
0 |
každá hodnota je na samostatném řádku – prázdný řádek nebo konec souboru značí konec dat |
1 |
[hodnota0/ hodnota1/ …/ hodnotaN] |
2 |
hodnota0, hodnota1, …, hodnotaN; |
3 |
{ hodnota0; hodnota1; …; hodnotaN } |
4 |
počet_hodnot, hodnota0, hodnota1, … , hodnotaN |
5 |
<počet [hodnota0, hodnota1, …, hodnotaN]> |
6 |
(hodnota0 * hodnota1 * hodnota * … * hodnotaN) |
7 |
<počet hodnot> hodnota0 / hodnota1 / … / hodnotaN |
8 |
hodnota0 | hodnota1 | … | hodnotaN |
9 |
<hodnota0| hodnota1| …| hodnotaN> |
Napsané funkce okomentujte – u hlavičky funkce uveďte stručně její činnost, význam parametrů a návratové hodnoty.
Vygenerujte alespoň tři dostatečně obsáhlé vstupní soubory s daty (alespoň o 30 prvcích), na kterých budete algoritmy testovat.
Ošetřete chybové stavy – v rámci popisu návratových hodnot funkce main uveďte seznam ošetřených chyb a jejich návratové kódy.
Volba řešené úlohy na základě ID:
Projekt bude vždy vytvářet dvojice studentů
Konkrétní třídicí algoritmus, který budete implementovat je dán poslední číslicí vašeho student ID (u studenta ve dvojici, jehož příjmení je dříve v abecedě).
Student ID – poslední číslice |
Implementovaný algoritmus |
0,1 |
1 |
2,4 |
2 |
3 |
3 |
5,6 |
4 |
7,8 |
5 |
9 |
6 |
Formát uložených dat zvolíte na základě předposlední číslice téhož student ID – viz tabulka formát dat v zadání.
Odevzdání – bude ještě upřesněno:
Projekt odevzdávejte prostřednictvím IS. Projekt do systému vloží oba autoři (druhý autor pod stejným jménem jako první – na konec názvu přidá znak x).
Termín odevzdání – pondělí (prodlouženo do úterka) zápočtový týden (ti kteří chtějí mít opraveno v zápočtovém týdnu), pondělí první týden zkouškového období (skupiny p. Petyovského), pondělí druhý týden zkouškového období – ostatní. Dvojice musíte odevzdat ve stejném termínu, jinak je druhé/pozdější odevzdání bráno jako plagiát.
Odevzdává se zip soubor: soubory pro vytvoření odevzdávaného zip souboru najdete zde. V adresáři vypracovaného projektu, kde je soubor *.sln, rozbalte stažený soubor a spusťte dávku *.cmd. V adresáři by měl být nově soubor *.zip (jeho konečné jméno viz níže). Datové testovací soubory by měly být v adresáři, kde jsou soubory *.c *.h (adresář by se měl jmenovat project). Pokud vám dávka nebude fungovat, obracejte se na p. Petyovského s přesným popisem umístění cmd, nastavení... Součástí vypracovaného projektu i zip souboru by měly být soubory knihovny check – check.h a check.cpp.
Soubory zip odevzdané se špatným jménem nebo obsahem budou bodově penalizovány.
Pokud
vám dávka nebude fungovat, vytvořte zip, jenž bude obsahovat vaše
zdrojové soubory (c a h, bez knihovny check()), testovací soubory).
Program bude možné přeložit ve VS2013 Console application.
Název zip souboru bude odvozen od termínu cvičení: MistnostHodinaLogin. (Místnost nahraďte „D104“, „D105“. Hodina nahraďte 12, 14, 16. Login xvomac12).
Např.:
Místnost: D104
Hodina:
14
Login:
xnonam00
Název souboru: D10414xnonam00.zip
Druhý z dvojice má název souboru: D10414xnonam00x.zip
Poslední úpravy 2014-04-14