Zadání úlohy třídění dat
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 |
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.
(První hodnota v souboru značí ID formátu. Pokud
čtení a zápis pro daný formát není implementován, vraťte hodnotu 200.
ID formátu |
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.
Poslední úpravy 2018-03-26