12 const int jmena_m_pocet = 10;
13 const int jmena_z_pocet = 10;
14 const int prijmeni_m_pocet = 10;
15 const int prijmeni_z_pocet = 10;
16 const char *jmena_m[] =
17 {
"Jakub",
"Jan",
"Tomas",
"Lukas",
"Ondrej",
"Vojtech",
"Matej",
"Adam",
"Daniel",
"Filip" };
18 const char *jmena_z[] =
19 {
"Tereza",
"Natalie",
"Anna",
"Adela",
"Eliska",
"Karolina",
"Katerina",
"Barbora",
"Lucie",
21 const char *prijmeni_m[] =
22 {
"Novak",
"Svoboda",
"Novotny",
"Dvorak",
"Cerny",
"Prochazka",
"Kucera",
"Vesely",
"Horak",
24 const char *prijmeni_z[] =
25 {
"Novakova",
"Svobodova",
"Novotna",
"Dvorakova",
"Cerna",
"Prochazkova",
"Kucerova",
"Vesela",
26 "Horakova",
"Nemcova" };
33 SVOBODNY =
'S', ZENATY =
'Z', ROZVEDENY =
'R', VDOVEC =
'V'
50 int je_prestupny(
unsigned int rok);
51 unsigned int pocet_dnu(
unsigned int mesic);
52 datum generuj_datum(
int rok_od,
int rok_do);
53 int generator(
char *soubor,
int pocet);
54 int vyhledej(
char *soubor,
char *kriteria, ...);
60 generator(
"databaze.dat", 1000);
63 vyhledej(
"databaze.dat",
"P", ZENA);
65 vyhledej(
"databaze.dat",
"jps",
"Anna",
"Novotna", VDOVEC);
70 int je_prestupny(
unsigned int rok)
73 return (rok % 400 == 0);
75 return (rok % 4 == 0);
78 unsigned int pocet_dnu(
unsigned int mesic)
80 const static int pocet[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
82 return pocet[mesic - 1];
87 datum generuj_datum(
int rok_od,
int rok_do)
95 rok = (rand() % (rok_do - rok_od + 1)) + rok_od;
96 mesic = (rand() % 12) + 1;
97 max_den = pocet_dnu(mesic);
98 if ((mesic == 2) && (je_prestupny(rok)))
100 den = (rand() % max_den) + 1;
108 int generator(
char *soubor,
int pocet)
115 fw = fopen(soubor,
"wb");
117 printf(
"Chyba: Vystupni soubor nebyl vytvoren. \n");
122 srand((
unsigned) time(NULL));
123 for (i = 0; i < pocet; i++) {
127 o.pohlavi = (rand() % 2) ? MUZ : ZENA;
128 if (o.pohlavi == MUZ) {
129 strcpy(o.jmeno, jmena_m[rand() % jmena_m_pocet]);
130 strcpy(o.prijmeni, prijmeni_m[rand() % prijmeni_m_pocet]);
132 strcpy(o.jmeno, jmena_z[rand() % jmena_z_pocet]);
133 strcpy(o.prijmeni, prijmeni_z[rand() % prijmeni_z_pocet]);
135 o.narozen = generuj_datum(MIN_ROK, MAX_ROK);
136 stav_cislo = rand() % POCET_STAVU;
137 switch (stav_cislo) {
153 zapsano = fwrite(&o,
sizeof(
osoba), 1, fw);
160 if (fclose(fw) == EOF) {
161 printf(
"Chyba: Vystupni soubor nebyl uzavren. \n");
168 int vyhledej(
char *soubor,
char *kriteria, ...)
175 static char *stavy[] =
176 {
"svobodny",
"svobodna",
"zenaty",
"vdana",
"rozvedeny",
"rozvedena",
"vdovec",
"vdova" };
179 printf(
"%s %s ", o.jmeno, o.prijmeni);
181 if (o.pohlavi == MUZ)
186 printf(
"%i. %i. %i", o.narozen.den, o.narozen.mesic, o.narozen.rok);
202 stavy_index += (o.pohlavi == MUZ) ? 0 : 1;
203 printf(
", %s\n", stavy[stavy_index]);