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