From a4761bdf1719208786041ef67abed4104da67361 Mon Sep 17 00:00:00 2001 From: Radovan Kofira Date: Tue, 10 Nov 2020 18:48:19 +0100 Subject: [PATCH] este nic --- cv6/Makefile | 13 +++++++ cv6/a_station.c | 46 ++++++++++++++++++++++++ cv6/a_station.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++ cv6/a_station.o | Bin 0 -> 4808 bytes cv6/main.c | 41 ++++++++++++++++++++++ cv6/main.o | Bin 0 -> 6848 bytes cv6/station | Bin 0 -> 20432 bytes 7 files changed, 191 insertions(+) create mode 100644 cv6/Makefile create mode 100644 cv6/a_station.c create mode 100644 cv6/a_station.h create mode 100644 cv6/a_station.o create mode 100644 cv6/main.c create mode 100644 cv6/main.o create mode 100644 cv6/station diff --git a/cv6/Makefile b/cv6/Makefile new file mode 100644 index 0000000..8cec7f4 --- /dev/null +++ b/cv6/Makefile @@ -0,0 +1,13 @@ +CFLAGS= -std=c99 -g -Wall -Werror + +all: station + +%.o: %.c + gcc -c -o $@ $< $(CFLAGS) + +station: main.o a_station.o + gcc $(CFLAGS) main.o a_station.o -o station + +clean: + rm *.o station + diff --git a/cv6/a_station.c b/cv6/a_station.c new file mode 100644 index 0000000..8e5593e --- /dev/null +++ b/cv6/a_station.c @@ -0,0 +1,46 @@ +#include "a_station.h" +#include +#include + +struct station* create_station(){ + struct station* station = (struct station*)calloc(1,sizeof(struct station)); + station->tracks = (struct car**)calloc(STATION_SIZE, sizeof(struct car*)); + station->track_count = STATION_SIZE; + return station; +} +unsigned long hash(char *key, size_t len) +{ + unsigned long hash, i; + for(hash = i = 0; i < len; ++i) + { + hash += key[i]; + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + return hash; +} +void destroy_station(struct station* station){ +} + +int select_track(struct station* station, const char* target){ + return 0; +} + +void add_target_capacity(struct station* station,const char* target, int capacity){ +} + +int get_target_capacity(struct station* station,const char* target){ + return 0; +} + +int count_targets(struct station* station){ + return 0; +} + +int count_capacity(struct station* station){ + return 0; +} + diff --git a/cv6/a_station.h b/cv6/a_station.h new file mode 100644 index 0000000..ce8c733 --- /dev/null +++ b/cv6/a_station.h @@ -0,0 +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 { + // Cielova stanica / nazov + char value[TARGET_SIZE]; + // Pocet cestujuchich + int capacity; + // Smernik na dalsi zaznam + struct car* next; +}; + +/** + * Cela databaza zaznamov + */ +struct station { + // Dynamicke pole smernikov na zaznamy + // jeden zaznam ma typ struct car* + struct car** tracks; + // Velkost pola tracks + int track_count; +}; + + +/** + * 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 diff --git a/cv6/a_station.o b/cv6/a_station.o new file mode 100644 index 0000000000000000000000000000000000000000..2516a22ad90e4c6631afaadafd3d8ce5e0b69966 GIT binary patch literal 4808 zcmbW43sh4_8h|In@LIqCQ9-DJDAj6XV6D4UZNocdL*cAofx;#?;eu31G>LBFX-Uh>;tL|L(&sc4BsP>H;Gkc zPai$uPf*|(>QptPkE-laBF-rNiG`>=T|yH33!~dg+^WjH`mPf@pa+pXf9R*3m>Akc z?m1QXkfdXMYs+tVomR^sQAmcgr>oj`N9@7ortpS{pqVpUFnveL* zndG0D+wP~TP_*ayyfq`HOcHuFs4{ve#ppEXM?}2(y?*;r(ZS~UGL+ps z;ljhUse2^Fd$uR4r>E6LY!2a^Te6%X3E8b7vo9P8JC}`$E+JXJq#^L|$wuk=s8v%9 z8`~#u4((i%8@IQ3{Usl{r=SEGN*J$LO_bx8qNBc?g^&MPms^}lTU zyEeANZ}4znqGE=_TzebUO^e&*uYOF7{*m@@y65`b6IRP}y-Kzm3+Yq@r5}jO67MrK z_)SfS9r+wD;3J}2JEm{EJS#LWt9QtJU`uxJa9VG7(bS^J_X4}OH}WS|op~l+q7I0= z{Mqf=nt(rE*m*t5x^ab7gsM%v5%aZWuMi2-?p|#89US9TmM1FpSwGH z-bWIhe=yM_0H3L6^S-8!(K=;+o%-T@;KlHdPF_>w>hcVSG{u3bsmV9KztWqu zzw)81cbrwd>!#f3)$LzCw_&izd}uiP?c;_IzVzvQrgqV*ch=rPnW?Fd$IQ-rI)6?~ zf#+8>NMx0YqJsSVx8X&I#+>{}6Ef1KJUdd6ps#b5dfJ2j0HZ1L8_IFq*~MiOrrXYuhcJ7J@?0!Q6ZQ_4%kYo*>j}h7*fUr@C+H%y znn2vZe;w9|f4x8vf*Cea{u09xr!iYNONG%O*CV}&=PWz`q{&q0q$H~~IT;yC)AKZW z$tmh|4bpR!l}0@(<;@n8(dKqG^Od~bqOq7b{R+gDmTD}VshqcH^xR5LUtzH!(qWn2 zxY_{Jj9fi;fG|>+7uiu{F5ms&YVmX)Ecd0H>=4iif}KHl0RBBhAa0>9A?zr^^J#w) z!)5e>jHH}&=__3zb3FV#cP+mEg$8v;XkW$fuW29ZgMSXK3(pz&X6pYuljkqA|02WB z)BawDL*6!qx6pnU!_U$_NEi>r=p)7-PTobzVclRK!g@d+7^fedH*lC|80C-$_W2yf zAMzwIoTKANqnrrx9AO=vW&9z}a}582=BZ{lK6*l{qml@cAI|S?#vk&xF&y$AXE^MW za|~~Fl|>gQCxX<4`{YZ;AL{;>;ZQf2Zf;orqcp#aa>x(&*j&aR@-JfeRhlP*$wM(J zWc(oyoMkc|&$kHNu`nLUqofMUV<;zOXeogx84mN(G91>kn&I$#_c9#zRR_ai-}W;c z&IOX2ZB-Udho!~jlFLCe@s*t1!dop!UdmZGB-feENG{M)UbnhjQ(-7GVw<3II-QAM z^MIK%afWjK!H~)d0}mm%4wCDQRaLwJmoOMDyc~Z#J&NBG_-c36;g@U5Ok5RDNB{Fh z3=SpF2%axwQc`6f04j;EXN$re@(xgXLafjBcL4?Ea|7`({}jx;)sLWuqZQjd z8^i<4$BMW34jMln9I0gE$$9cNeg%DDdpz31cRH_$S1>JzUBPGAP`_UBdkr;y{x5 zf$ny~$~qeF$%xMS?xu_`m)pIX#*ey*OM&qNZpI36RRW;WO4qNI_R0E@?>C5t^&{h9 yYm*Qwz2v3TNWOc?H#i#~fEj!CFhce8Uy5C%AkD>np!1y5r8~;BZc#8c1 literal 0 HcmV?d00001 diff --git a/cv6/main.c b/cv6/main.c new file mode 100644 index 0000000..a39cb06 --- /dev/null +++ b/cv6/main.c @@ -0,0 +1,41 @@ +#include "a_station.h" +#include +#include +#include + +void print_station(struct station* station){ + // Vypise celu stanicu + printf("station>>>\n"); + // Prechadza vsetky trate + for (int i = 0 ; i< station->track_count; i++){ + struct car* start = station->tracks[i]; + struct car* this = start; + // Prechadza vsetky vozne + while(this != NULL){ + printf("%s %d -> ",this->value,this->capacity); + this=this->next; + } + printf("NULL\n"); + } + printf("<<&4 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 xL&!|>l2c4NVIJUF&&Gord+lO`YRD&qy(` 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 Wy{t&LS8OU$RJKuRY_J*FNbx_{j^Ek< literal 0 HcmV?d00001