/************************/
/* soubor STRUCT01.C	*/
/* ukazka struct	*/
/************************/

#include <stdio.h>
#include <string.h>

#define ZNAKU_NAZEV	25
#define POLOZEK_ZBOZI	10
#define FORMAT_VYROBEK	"cislo:%5d pocet:%5d cena:%10.2f nazev:%s\n"

typedef
	struct {float re, im;} complex;
typedef
  struct {
	  int ev_cislo;
	  char nazev[ZNAKU_NAZEV + 1];
	  int  na_sklade;
	  float cena;
	 } vyrobek;
typedef vyrobek zbozi[POLOZEK_ZBOZI];

int main(void)
{
 complex cislo, im_jednotka = {0, 1};
 zbozi polozky;
 vyrobek *ppolozky,
	 a = {8765, "nazev zbozi na sklade", 100, 123.99};

 cislo.re = 12.3456;
 cislo.im = -987.654;

 polozky[0].ev_cislo = 0;
 strcpy(polozky[0].nazev, "polozka cislo 0");
 polozky[0].na_sklade = 20;
 polozky[0].cena = 45.15;

 ppolozky = polozky + 1;
 ppolozky->ev_cislo = 1;
/*  (*ppolozky).ev_cislo = 1; */
 strcpy(ppolozky->nazev, "polozka cislo 1");
 ppolozky->na_sklade = 123;
 ppolozky->cena = 9945.15;

 printf("re = %10.5f im = %10.5f\n", im_jednotka.re, im_jednotka.im);
 printf("re = %10.5f im = %10.5f\n", cislo.re, cislo.im);
 printf(FORMAT_VYROBEK, a.ev_cislo, a.na_sklade, a.cena, a.nazev);
 printf(FORMAT_VYROBEK, polozky[0].ev_cislo, polozky[0].na_sklade,
	polozky[0].cena, polozky[0].nazev);
 printf(FORMAT_VYROBEK, ppolozky->ev_cislo, ppolozky->na_sklade,
	ppolozky->cena, ppolozky->nazev);
 return 0;
}