Shrnutí
V této lekci jste se naučili, že:
- Struktura spojí hodnoty, které k sobě patří, klidně různých datových typů, do jednoho celku. Její definice vyjmenuje členy a končí
};, i se středníkem. - Proměnnou typu struktury vytvoříte s hodnotami ve složených závorkách v pořadí členů:
struct produkt chleba = {"Chléb", 32.5, 2};. - K členu se dostanete tečkou,
chleba.cena, a pracujete s ním jako s obyčejnou proměnnou. Text do členu kopírujete funkcístrcpy, protože do pole nejde přiřadit pomocí=. typedef struct { ... } Produkt;dá datovému typu názevProdukt, takže píšeteProdukt chleba. V tomto kurzu píšeme struktury takto.- Pole struktur,
Produkt kosik[3], má v každém prvku jednu strukturu:kosik[i].nazev. Šířky jako%-8sa%6.2fsrovnají sloupce tabulky pod sebe. - Členem může být i pole nebo jiná struktura a tečky a závorky pak řetězíte:
eva.narozeniny.rok,eva.body[0]. - Struktura předaná funkci se zkopíruje, stejně jako struktura přiřazená pomocí
=. Změny kopie originál nezmění. Struktury nejde porovnat pomocí==, porovnávejte raději jejich členy. - Přes ukazatel,
Produkt *polozka, funkce změní originál:polozka->pocetje totéž co(*polozka).poceta funkci voláte s&mleko.const Produkt *polozkapoužijete pro funkci, která strukturu jen čte. - Funkce může strukturu vrátit, a vrátit tak několik hodnot najednou.
Tím jste prošli poslední nové téma kurzu. V další lekci vás čeká závěrečný projekt: krok za krokem napíšete jeden větší program a využijete v něm všechno, co jste se naučili: proměnné, podmínky, cykly, pole, řetězce, funkce, ukazatele i struktury.
Nejdřív si ale struktury procvičte na malém úkolu: seznamu knih, které čtete.
Jak psát:
Pokyny
Nad main definujte pomocí typedef strukturu Kniha se třemi členy: názvem nazev (pole 30 znaků) a dvěma celými čísly, počtem stran stran a počtem už přečtených stran precteno. V main vytvořte pole knihy se třemi knihami: Hobit má 310 stran a přečtených je z nich 120, Matylda má 240 stran a nemáte z ní přečtenou ani jednu a Momo má 300 stran a máte ji přečtenou celou. Pak knihy vypište v cyklu, každou na jeden řádek, ve tvaru Hobit: 120/310.
Mezi definici struktury a main napište funkci void precti(Kniha *kniha, int pocet), která knize přičte pocet k přečteným stranám precteno, ale nikdy víc, než má kniha stran: kdyby byl výsledek větší než stran, nastaví precteno na stran. V main ji před cyklem zavolejte dvakrát: precti(&knihy[0], 250) a precti(&knihy[1], 35). Program pak vypíše Hobit: 310/310, Matylda: 35/240 a Momo: 300/300.
Začněte programovat zdarma
9/9