Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1 Procedurálne programovanie, 2011
- Projekt č. 2 – Spájaný zoznam štruktúr
- Napíšte program, ktorý bude pracovať so záznamami v dynamickom spájanom zozname.
- Záznamy uložené v súbore zamestnanci.txt budú predstavovať záznamy
- o zamestnancoch. Jednotlivé položky záznamu budú v súbore umiestnené vždy v
- samostatnom riadku. Význam položiek záznamu bude nasledujúci:
- - Meno: maximálne 30 znakový reťazec
- - Priezvisko: maximálne 30 znakový reťazec
- - Riadiaci pracovník/Bežný zamestnanec: 1/0 (1 pre riadiaceho pracovníka, 0
- pre bežného zamestnanca)
- - Hrubá mzda: reálne číslo z intervalu <300.00, 10 000.00>, vždy s dvoma
- desatinnými miestami
- - Dátum nástupu: osemmiestne celé číslo v tvare rrrrmmdd (rok, mesiac a deň
- bez bodiek a medzier), napr. 20110126 pre dátum 26.1.2011
- Každý, aj posledný záznam, bude ukončený znakom # v novom riadku a znakom konca
- riadku. Súbor bude obsahovať iba hodnoty, nie názvy položiek.
- Ukážka obsahu súboru zamestnanci.txt:
- Jozef¿
- Maly¿
- 0¿
- 1078.88¿
- 20111111¿
- #¿
- Maria¿
- Krasna¿
- 1¿
- 636.90¿
- 19990109¿
- #¿
- Program bude vykonávať príkazy načítané zo štandardného vstupu. Každý príkaz bude
- predstavovať veľké písmeno nasledované znakom konca riadku.
- • N – je príkaz na načítanie záznamov o zamestnancoch zo súboru
- zamestnanci.txt do spájaného zoznamu štruktúr.
- Ak zoznam predtým existoval, je potrebné uvoľniť pamäť. Ak nie je možné súbor
- otvoriť, program vypíše správu Zaznamy neboli nacitane ukončenú znakom
- konca riadku. Ak sa podarilo záznamy načítať, vypíše správu Nacitalo sa n
- zaznamov ukončenú znakom konca riadku, pričom n znamená počet načítaných
- záznamov.
- 2 Procedurálne programovanie, 2011
- • V – je príkaz na výpis celého spájaného zoznamu záznamov.
- Formát výpisu je nasledujúci. Pred každým záznamom je uvedené číslo záznamu
- (poradie od začiatku zoznamu, začínajúce číslom 1) nasledované bodkou a znakom
- konca riadku. Potom nasleduje výpis záznamu, pričom názov položky (bez diakritiky)
- je nasledovaný dvojbodkou, medzerou, hodnotou položky a znakom konca riadku. Ak
- zoznam neobsahuje záznamy, pri tejto voľbe program negeneruje žiaden výstup.
- Ukážka výstupu pre dva vyššie uvedené záznamy:
- 1.¿
- Meno: Jozef¿
- Priezvisko: Maly¿
- Bezny zamestnanec¿
- Hruba mzda: 1078.88¿
- Datum nastupu: 20111111¿
- 2.¿
- Meno: Maria¿
- Priezvisko: Krasna¿
- Riadiaci pracovnik¿
- Hruba mzda: 636.90¿
- Datum nastupu: 19990109¿
- • P – je príkaz na pridanie záznamu do dynamického zoznamu.
- Príkaz je v ďalšom riadku nasledovaný celým číslom p > 0 vyjadrujúcim pozíciu
- (počítanú od 1), na ktorú sa má záznam pridať (záznam z pozície p sa posunie na
- pozíciu p+1). Potom nasleduje ďalších 5 riadkov, každý ukončený znakom konca
- riadku a obsahujúcim položky záznamu v poradí v akom sú aj v súbore
- zamestnanci.txt. Ak pozícia p v zozname neexistuje, záznam sa pridá na koniec
- zoznamu. Pri tejto voľbe program negeneruje žiaden výstup.
- • Z – je príkaz na zmazanie duplicitných záznamov.
- Ak dynamický zoznam obsahuje viac záznamov pre jedného zamestnanca (t.j. majú
- rovnaké meno a priezvisko, pri porovnávaní ignorujte rozdiely vo veľkosti písmen),
- prvý takýto záznam program v zozname ponechá a vymaže všetky ostatné záznamy
- pre tohto zamestnanca. Pri tomto príkaze program vypíše správu Vymazalo sa n
- zaznamov, kde n je počet vymazaných záznamov. Správa je ukončená znakom
- konca riadku.
- • A – je príkaz na aktualizáciu (zmenu) záznamov podľa hrubej mzdy.
- Riadok s príkazom A je v ďalšom riadku nasledovaný reálnym číslom m s maximálne
- dvoma desatinnými miestami vyjadrujúcim minimálnu mzdu. Program aktualizuje
- všetky hrubé mzdy, ktorých hodnota je nižšia ako načítaná minimálna mzda, na
- 3 Procedurálne programovanie, 2011
- hodnotu minimálnej mzdy m. Pri tomto príkaze program vypíše správu
- Aktualizovalo sa n zaznamov, kde n je počet zmenených záznamov. Správa je
- ukončená znakom konca riadku.
- • K – je príkaz na ukončenie programu.
- Ak spájaný zoznam existoval, treba uvoľniť pamäť. Pri tejto voľbe program
- negeneruje žiaden výstup.
- Používajte funkcie, t.j. každý príkaz (prípadne okrem K) sa vykoná vo svojej funkcii,
- pričom použite prenos argumentov, nie globálne premenné.
Add Comment
Please, Sign In to add comment