[Cvičení 5] [Obsah] [Cvičení 7]

Cvičení 6


Úloha 6.1

Napište program, který přečte z klávesnice název vstupního a výstupního textového souboru. Vstupní soubor přečte po znacích a zkopíruje jej do výstupního souboru, a to tak, že všechna písmena převede na velká (bez diakritiky). Zároveň na obrazovku vypíše, kolik bylo v souboru znaků. Ošetřete případ, kdy vstupní nebo výstupní soubor nelze otevřít - vypište chybové hlášení a ukončete program.
Návod: Pro názvy souborů deklarujte statická pole o velikosti 256 znaků, názvy čtěte pomocí funkce gets(char *s). Pro převod malých znaků využijte podmíněný výraz (c>='a' && c<='z') ? c - ('a'-'A') : c a předejte jej přímo jako skutečný parametr funkci fputc(int c, FILE *f).

Řešení:

Dev C++:kopie.dev, kopie.c
CodeBlocks:kopie.cbp, kopie.c


Úloha 6.2

Napište program, který přečte z textového souboru dva vektory do pole a vypočítá a na obrazovku vytiskne součet vektorů. První číslo v souboru je dimenze vektorů. Podle této dimenze program dynamicky alokuje tři pole, do dvou načte oba vektory, do třetího uloží jejich součet a vytiskne jej na obrazovku. Není-li možné soubor otevřít, vypište chybovou hlášku a ukončete program. Dále otestuje, zda se správně načetla velikost vektoru, pokud ne, vypište chybovou hlášku a ukončete program. Dále ještě testujte, zda se správně načítají položky vektoru, v záporném případě vypište také chybovou hlášku a ukončete program.

Vstupní soubor:

5
1 2 6 7 -3
10 4 5 1 1

Výstup na obrazovce:

c = (11,6,11,8,-2)

Řešení:

Vstupní soubor:vstup.txt
Dev C++:vektor_soubor.dev, vektor_soubor.c
CodeBlocks:vektor_soubor.cbp, vektor_soubor.c


Úloha 6.3

Napište program, který čte z textového souboru jméno, příjmení a uživatelské jméno (na každém řádku jsou tři řetězce oddělené mezerou nebo tabulátorem). Výstupem je textový soubor s příponou .bat - dávka s příkazy net, která přidává do databáze Active Directory nové uživatele a uživatele do skupiny. Jméno vstupního a výstupního souboru zadávejte z klávesnice.

Vstupní soubor:

Novák Josef		novak
Bálková	Petra		balkova
Kropáčková Jana	kropackova
Výstupní soubor:
net user novak 12345 /add /comment:"student" /fullname:"Josef Novák" /profilepath:\\alfa\profily_studentu\novak /scriptpath:zaci.bat
net group zaci05 novak /add
net user balkova 12345 /add /comment:"student" /fullname:"Petra Bálková" /profilepath:\\alfa\profily_studentu\balkova /scriptpath:zaci.bat
net group zaci05 balkova /add
net user kropackova 12345 /add /comment:"student" /fullname:"Jana Kropáčková" /profilepath:\\alfa\profily_studentu\kropackova /scriptpath:zaci.bat
net group zaci05 kropackova /add

Návod: Čtěte soubor po řádcích pomocí fgets nebo čtěte soubor po trojicích řetězců pomocí fscanf("%s %s %s",jmeno, prijmeni,user); Při čtení pomocí fscanf lze špatně kontrolovat, zda řádek obsahuje skutečně tři řetězce. Pomocí fgets načteme celou řádku a jméno, příjmení a uživatelské jméno získáme z načtené řádky pomocí sscanf; tím zároveň otestujeme, zda na řádce byly tři řetězce.

Polotovar:

Vstupni soubor:lide.txt
Dev C++:makebatpol.dev, makebatpol.c
CodeBlocks:makebatpol.cbp, makebatpol.c

Řešení:

Dev C++:makebat.dev, makebat.c
CodeBlocks:makebat.cbp, makebat.c

Úloha 6.4

Napište program unx2dos, který převádí textové soubory UNIXového typu do formátu firmy Microsoft.

Návod: Otevřete soubor vstupní i výstupní soubor v binárním módu. Jakmile narazíte ve vstupním souboru na znak '\n', zapište do výstupního souboru dva znaky: '\r' a '\n'. Druhý způsob spočívá v tom, že vstupní soubor otevřete v binárním módu a výstupní v textovém. Pak není potřeba provádět žádné úpravy, ale tento zdrojový kód bude správně bude fungovat pouze přeložený pod MS Windows. První verze je beze změny přeložitelná pod oběma operačními systémy.

Testovací soubor ve formátu UNIX: MPX.eps

Řešení:

Dev C++:unx2dos.dev, unx2dos.c
CodeBlocks:unx2dos.cbp, unx2dos.c


[Cvičení 5] [Obsah] [Cvičení 7]