/*
 * Soubor:  20111201-Thu-struktury.c
 * Datum:   01.12.2011 08:27
 * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
 * Licence: GNU/GPL 
 * Úloha:   jak se pracuje se struct
 ****************************************************/
#define _ISOC99_SOURCE
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>

/* ***************    Makra    ******************** */
#define ARREYC 1024

/* ***************   Funkce    ******************** */


/****************************************************
 *               Hlavní program.
 ****************************************************/
int main(void) {

    int cislo, dalsi_sislo;

    struct {
        int vyska;
        int vaha;
    } pavel, lukas, jan;
/////////////////////////////////////////////////////
    struct miry {
        int vyska;
        int vaha;
    } jerony, tomas;

    struct miry ondra;
/////////////////////////////////////////////////////
    struct miryy {
        int vyska;
        int vaha;
    } ;

    struct miryy radim, mates;
/////////////////////////////////////////////////////
// operátor typedef definje nové datové typy

    typedef int CELECISLO;
    CELECISLO i=20;
/////////////////////////////////////////////////////
//
    typedef struct {
        int den;
        int mesic;
        int rok;
    } DATNAR;

    typedef struct {
        int vyska;
        int vaha;
        DATNAR datum;
    } MIRY;  // velka pismena odlišují jména proměnných a jmnéna datových tipů

    MIRY petr, jirka ;

    petr.vyska = 159;
    jirka.datum.den = 5;
    jirka.datum.mesic = 12;
    jirka.datum.rok = 1992;
/////////////////////////////////////////
    MIRY *fred;

    //*(fred.vyska)=181;   // fred.vyska je ukazatel => chyba
    fred = &jirka;
    (*fred).vyska=181;   // fred je ukazatel a uvnitř je vyska
    fred->vyska=181;     // ekvivalentí zápis k předchozímu řádku
    printf("%d\n",jirka.vyska);

    // anonynmí paměť
    fred = malloc(sizeof(MIRY));
    fred->vyska = 193;
    fred->datum.rok = 1999;

    printf("%d\n",fred->vyska);
    printf("%d\n",(*fred).datum.rok);

/////////////////////////////////////////
// příklad evidence žáků

    typedef struct {
        int prumer;
        int vek;
        char jmeno[20];
        DATNAR datum;
    } ZAK;

    ZAK trida[33];

    trida[0].vek=12;
    trida[1].vek=14;
    trida[2].vek=11;
    trida[0].datum.den=28;

    int pole[33];
    pole[0]=20


////////////////////////////////////
    puts("konec");
    return 0;
}

