From 8ff72ee527b678dc9746f8296a9d3d0a406ecc6d Mon Sep 17 00:00:00 2001 From: Yevhen Kozirovskyi Date: Fri, 8 Nov 2024 00:16:28 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20cv6/a=5Fstation.h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cv6/a_station.h | 95 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 79 insertions(+), 16 deletions(-) diff --git a/cv6/a_station.h b/cv6/a_station.h index a1060e0..ce8c733 100644 --- a/cv6/a_station.h +++ b/cv6/a_station.h @@ -1,28 +1,91 @@ #ifndef STATION_H #define STATION_H - +// Pocet trati k dispozicii #define STATION_SIZE 10 - +// Maximalny pocet znakov pre ulozenie nazvu cielovej stanice #define TARGET_SIZE 36 +/** + * Jeden zaznam o kapacite do cielovej stanice + */ struct car { - char value[TARGET_SIZE]; - int capacity; - struct car* next; + // Cielova stanica / nazov + char value[TARGET_SIZE]; + // Pocet cestujuchich + int capacity; + // Smernik na dalsi zaznam + struct car* next; }; - +/** + * Cela databaza zaznamov + */ struct station { - struct car** tracks; - int track_count; + // Dynamicke pole smernikov na zaznamy + // jeden zaznam ma typ struct car* + struct car** tracks; + // Velkost pola tracks + int track_count; }; -struct station* create_station(); -void destroy_station(struct station* station); -int select_track(struct station* station, const char* target); -void add_target_capacity(struct station* station, const char* target, int capacity); -int get_target_capacity(struct station* station, const char* target); -int count_targets(struct station* station); -int count_capacity(struct station* station); -#endif +/** + * Vytvori prazdnu stanicu. + * Alokuje pole smernikov tracks na pociatocnu kapacitu STATION_SIZE + * nastavi velkost capacity na STATION_SIZE + * @return smernik na prazdnu stanicu + */ +struct station* create_station(); + +/** + * Uvolni pamat + * @param smernik na databazu + */ +void destroy_station(struct station* station); + +/** + * Vyberie poziciu v poli station->tracks pre ulozenie zaznamu target + * + * Proces vyberu by mal splnat kriteria pre hash funkciu: + * - rovnaky retazec by mal vzdy mat rovnaky vysledok + * - pre rozne retazce by mali byt vysledky co najviac rozne + * + * @param smernik na databazu + * @param nazov cielovej stanice + * @return cislo v intervale 0 az N-1, kde N je station->track_count + */ +int select_track(struct station* station, const char* target); + +/** + * Zvysi zaznam o pocte cestujucich do danej cielovej stanice. + * + * Najprv sa vyberie cielova trat pomocou select_track(). Ak zaznam neexistuje, + * vytvori sa novy. Ak zaznam na danej trati (spojkovom zozname) existuje, cislo sa pripocita. + * V databaze nesmu byt dva zaznamy s rovnakou cielovou stanicou. + * + * @param smernik na databazu + * @param nazov cielovej stanice + */ +void add_target_capacity(struct station* station,const char* target, int capacity); + +/** + * Ziska zaznam o cielovej stanici. + * @param smernik na databazu + * @param nazov cielovej stanice + * + * @return kapacitu do cielovej stanice. Ak sa zaznam nenachedza, vrati nula. + */ +int get_target_capacity(struct station* station,const char* target); + +/** + * Spocita pocet cielovych stanic + * @param smernik na databazu + */ +int count_targets(struct station* station); + +/** + * Spocita kapacitu vo vsetkych zaznamoch + * @param smernik na databazu + */ +int count_capacity(struct station* station); +#endif