From c48c12b36f69a96a1e9297380ed3173f52d2c840 Mon Sep 17 00:00:00 2001 From: Matej Hajduk Date: Tue, 4 Nov 2025 11:24:57 +0100 Subject: [PATCH] du4 --- du4/Makefile | 13 +++++++++ du4/a_train.c | 64 +++++++++++++++++++++++++++++++++++++++++++ du4/a_train.h | 51 +++++++++++++++++++++++++++++++++++ du4/a_train.o | Bin 0 -> 6208 bytes du4/main.c | 17 ++++++++++++ du4/main.o | Bin 0 -> 4640 bytes du4/program.c | 73 -------------------------------------------------- du4/train | Bin 0 -> 19152 bytes 8 files changed, 145 insertions(+), 73 deletions(-) create mode 100644 du4/Makefile create mode 100644 du4/a_train.c create mode 100644 du4/a_train.h create mode 100644 du4/a_train.o create mode 100644 du4/main.c create mode 100644 du4/main.o delete mode 100644 du4/program.c create mode 100755 du4/train diff --git a/du4/Makefile b/du4/Makefile new file mode 100644 index 0000000..3c2c463 --- /dev/null +++ b/du4/Makefile @@ -0,0 +1,13 @@ +CFLAGS= -std=c99 -g -Wall + +all: train + +%.o: %.c + gcc -c -o $@ $< $(CFLAGS) + +train: main.o a_train.o + gcc main.o a_train.o -o train + +clean: + rm *.o train + diff --git a/du4/a_train.c b/du4/a_train.c new file mode 100644 index 0000000..2d85ee4 --- /dev/null +++ b/du4/a_train.c @@ -0,0 +1,64 @@ +#include "a_train.h" +#include +#include +#include +struct car* add_car(struct car* first,const char* target) { + struct car* newcar = calloc(1,sizeof(struct car)); + if(!newcar) return first; + + strcpy(newcar->value, target); + newcar->next = NULL; + + if(first == NULL){ + return newcar; + } + struct car* temp = first; + while(temp->next !=NULL){ + temp = temp->next; + } + temp->next = newcar; + return first; +} + +void print_train(struct car* first) { + struct car* temp = first; + while(temp != NULL) { + printf("%s\n",temp->value); + temp = temp->next; + } +} + +void cancel_train(struct car* first) { + struct car* temp; + while(first != NULL){ + temp = first -> next; + free(first); + first = temp; + } +} + + +struct car* clear_train(struct car* first, const char* target) { + struct car* temp = first; + struct car* prev = NULL; + + while(temp != NULL){ + if(strcmp(temp->value, target)== 0){ + if(prev == NULL){ + first= temp->next; + free(temp); + temp= first; + + }else{ + prev->next= temp->next; + free(temp); + temp = prev->next; + } + }else{ + prev= temp; + temp =temp->next; + } + } + return first; +} + diff --git a/du4/a_train.h b/du4/a_train.h new file mode 100644 index 0000000..5982bfe --- /dev/null +++ b/du4/a_train.h @@ -0,0 +1,51 @@ +#ifndef TRAIN_H +#define TRAIN_H +#define SIZE 100 + +/** + * Jeden vozen vlaku + */ +struct car { + /** + * Nazov cielovej stanice + */ + char value[SIZE]; + /** + * Smenik na dalsi vozen + */ + struct car* next; +}; + +/** + * Prida vozen na koniec vlaku. + * + * @arg nazov cielovej stanice, ktory sa ma priradit novemu voznu. + * @return smernik na zaciatok vlaku. + */ +struct car* add_car(struct car* first,const char* target); + + +/** + * Vypise vsetky vozne vo vlaku + * + * @arg smernik na prvy vozen + */ +void print_train(struct car* first); + +/** + * Zrusenie vsetkych voznov vo vlaku. + * @arg smernik na prvy vozen + */ +void cancel_train(struct car* first); + +/** + * Vyradenie vsetkych voznov, ktorych cielova stanica je target + * + * @arg smernik na prvy vozen + * @arg cielova stanica, ktora sa ma vyradit z vlaku. + * @return smernik na novy prvy vozen + * + */ +struct car* clear_train(struct car* first,const char* target); + +#endif // TRAIN_H diff --git a/du4/a_train.o b/du4/a_train.o new file mode 100644 index 0000000000000000000000000000000000000000..695b3756a462c2444d9d403fb0605de553016d62 GIT binary patch literal 6208 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 literal 0 HcmV?d00001 diff --git a/du4/main.c b/du4/main.c new file mode 100644 index 0000000..d64f05a --- /dev/null +++ b/du4/main.c @@ -0,0 +1,17 @@ +#include "a_train.h" +#include + +// Testovaci subor pre vlak +int main(){ + struct car* train = NULL; + train = add_car(train,"Presov"); + train = add_car(train,"Bratislava"); + train = add_car(train,"Levoca"); + train = add_car(train,"Spiska Nova Ves"); + print_train(train); + clear_train(train,"Levoca"); + print_train(train); + cancel_train(train); + + return 0; +} diff --git a/du4/main.o b/du4/main.o new file mode 100644 index 0000000000000000000000000000000000000000..35751c3caf200329a059eb60b248e25e0602e9c7 GIT binary patch literal 4640 zcmb_eU1%It6uvW?O*YviO}g49R?J3g`hz=ZVp@{e#$bp|N~x_{v4s*Rvyl~wr-&u=|JSJK$&rD^EtvlV6T14@|g%;6#&8FKONXv(iM?y|8YgMau}0bq7JhNT=Vy$fQE^#$=MvOzC)xs$NSBPvSZoV+-R0EY!KQ040LJBc(_+-`BhRq&Y+ynHOSf!93LUMSi8mt1$;H##|c92HH zF#hQ5z<|9)4>5gUg=zGe8)T0_VoGO4Ym|zBP3i8->5em*i}EN@;Vi^tA=iPG z+Qs4=c3V)c`{CM^aXsW(Ja;)1OLn#4vZbsNRykO%*WAHcd1!2OX=Shx*!J-5!D3@X zF5hzgQI9H-nH`nTqQ>7pH8q~!essR!g$=G-VW=U+p%;gTtz9G5@D5hc7N9TOMGv+i z6&oG)1u)eTcMuOUo_kyv%U#Bn_Lj_R)H!z(h6f}&aJsYWtU1-uY<^4@5uWr$(=~}- zZYJqci6=kiA`gk%TvE|tk$@*pASGxICQwSqv*k8TO2|`X4UWhgWAjwI4-rsDop1{! z;r;92g>`V%4{}$iu8VJ;_%>U!|DqXfi3WLs;M@LrGok^;@y**}_-@8=48UIX!zAOn z{bP(PdsVsP>)2N`dwE+E7OrFeaty~;RP%q8aXs&wF?(E=%Kp6=9*^@;49B-r_NtRm zn|K$hjscDv@dQ1fjnN=$312$OC2isn_9`ZzyBNp5z#0_oWCr%~0%dt`3`gD_a3q?E z2ALQ5R>n&jj#~ueMZ>E77~7xLaFzS4h96-0f`+F#&g&Z9!}wboj(;|w_oHETKEJX2 zfris{D(Q0#&$Il4hEK43UBmxkSdDdf1@pTC+SgFzdNMqb06nH?8H-Wo^+FMVB>Q-Yl2AhDF!-qU(n%9M>(+E%ih);QvDlAx88bw^b=zK zTYvN&Vy@{Gl2!g4#K%d`kNu}(upeOXK~1TN0{x#m)JkA40%-bQ}9({5L5TR#QvkokVoDB zYr>Ph-y;8&?O{KBKm7Ml{t8dZ4VUjZ|6yJ*{(mL)A29vwfd6(rzs4cNNUvWv>5}}< N@%+Dw`GVE`{|0CO0Hgo_ literal 0 HcmV?d00001 diff --git a/du4/program.c b/du4/program.c deleted file mode 100644 index 79062c0..0000000 --- a/du4/program.c +++ /dev/null @@ -1,73 +0,0 @@ -#include -#include - -#define MAX 101 - -// funkcia, ktorá vracia zodpovedajúcu zatváraciu zátvorku -char expected_close(char open) { - switch (open) { - case '(': return ')'; - case '{': return '}'; - case '[': return ']'; - case '<': return '>'; - default: return 0; - } -} - -int main(void) { - char line[MAX]; - char stack[MAX]; - int pos[MAX]; // pozície otvorených zátvoriek - int top = -1; // index vrcholu zásobníka - - // načítanie jedného riadku - if (fgets(line, MAX, stdin) == NULL) - return 0; - - // odstrániť znak nového riadku, ak je prítomný - line[strcspn(line, "\n")] = '\0'; - - printf("Read: %s\n", line); - - int ok = 1; - int length = strlen(line); - - for (int i = 0; i < length; i++) { - char ch = line[i]; - - // ak je otváracia zátvorka - if (ch == '(' || ch == '{' || ch == '[' || ch == '<') { - top++; - stack[top] = ch; - pos[top] = i + 1; // indexovanie od 1 - } - // ak je zatváracia zátvorka - else if (ch == ')' || ch == '}' || ch == ']' || ch == '>') { - if (top < 0) { - printf("Unexpected closing bracket %c in %d\n", ch, i + 1); - ok = 0; - break; - } - - char last_open = stack[top]; - char expected = expected_close(last_open); - if (ch != expected) { - printf("Crossed bracket %c in %d, expected %c\n", ch, i + 1, expected); - ok = 0; - break; - } - top--; - } - } - - if (ok && top >= 0) { - printf("Missing closing bracket for %c from %d\n", stack[top], pos[top]); - ok = 0; - } - - if (ok) - printf("All brackets OK\n"); - - return 0; -} - diff --git a/du4/train b/du4/train new file mode 100755 index 0000000000000000000000000000000000000000..b8109a9b26b6c71cb786962a42e420541f290993 GIT binary patch literal 19152 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