diff --git a/du1/program.c b/du1/program.c index f3d90e1..f422624 100644 --- a/du1/program.c +++ b/du1/program.c @@ -10,6 +10,9 @@ struct pizza{ float prize; char name[LINE_SIZE]; }; +/* structura jednej polozky*/ + + char hacker_script(char c){ c = tolower((unsigned char)c); @@ -26,15 +29,17 @@ char hacker_script(char c){ case '9': return 'q'; default: return c;} } +/*hacker script nam bude vymenovat cisla na bukvy*/ + void normalize(const char *source, char *dest){ int i =0; - while(source[i]!='\0'){ - dest[i]= hacker_script(source[i]); + while(source[i]!='\0'){ /* tu je cyklus ktory precahdza slovom a normalizuje ho*/ + dest[i]= hacker_script(source[i]); i++; } - dest[i]='\0'; + dest[i]='\0'; ///ked slovo konci, cyklus tiez skonci a na konci bude terminator } @@ -42,21 +47,22 @@ void normalize(const char *source, char *dest){ -int read_pizza(struct pizza *item){ - char line_1[LINE_SIZE]; - char line_2[LINE_SIZE]; - if (fgets(line_1,LINE_SIZE,stdin)==NULL) return 0; +int read_pizza(struct pizza *item){ + char line_1[LINE_SIZE]; /// pre name + char line_2[LINE_SIZE]; /// pre price + + if (fgets(line_1,LINE_SIZE,stdin)==NULL) return 0; /// nacitava name, ak line_1 bude null tak nastala chyba if (fgets(line_2,LINE_SIZE,stdin)==NULL) return 0; - line_1[strcspn(line_1,"\n")] = '\0'; + line_1[strcspn(line_1,"\n")] = '\0'; /// ukoncuje terminatorom line_2[strcspn(line_2,"\n")] = '\0'; float price = 0.0; - if (sscanf(line_2, "%f", &price)!=1) return 0; + if (sscanf(line_2, "%f", &price)!=1) return 0;// nacitava len float number strcpy(item->name, line_1); - item->prize = price; + item->prize = price; // uklada name a price do itemu return 1; } @@ -66,29 +72,31 @@ int main(){ char search[LINE_SIZE]; char normal_search[LINE_SIZE]; - struct pizza list[MAXIT]; - int cnt = 0; + struct pizza list[MAXIT]; + int cnt = 0; printf("Zadaj hladanu surovinu:\n"); if (fgets(search, LINE_SIZE, stdin)==NULL) return 0; search[strcspn(search,"\n")] = '\0'; - normalize(search, normal_search); + normalize(search, normal_search); // normalizujeme nas hladany prvok printf("Zadaj jedalny listok:\n"); - while(cntname, line_1); + strcpy(item->name, line_1);// skopiruje nazov do struktury item->prize = price; return 1; @@ -34,14 +34,14 @@ int read_pizza(struct pizza *item){ int read_pizza_list(struct pizza* list){ int counter = 0; - for(int i = 0; iprizeprize) return -1; + if(p1->prizeprize) return -1; if(p1->prize>p2->prize) return 1; - return strcmp(p1->name,p2->name); + return strcmp(p1->name,p2->name); // ak cena bude ta ista, porovname mena } int main(){ struct pizza list[MAXIT]; - memset(list,0,sizeof(list)); + memset(list,0,sizeof(list)); // vydelime pamat pre menu int count = read_pizza_list(list); - qsort(list,count,sizeof(struct pizza), compare_pizza); + qsort(list,count,sizeof(struct pizza), compare_pizza); //triedenie menu for (int i = 0;isize=0; + s->size=0; //inicializacia stacku } -int is_empty(struct stack *s){return s->size==0;} +int is_empty(struct stack *s){return s->size==0;} // check if stack is empty int is_full(struct stack *s){return s->size==STACK_SIZE;} @@ -25,7 +25,7 @@ void push(struct stack *s, float value){ printf("full stack\n"); exit(0); } - s->values[s->size++]=value; + s->values[s->size++]=value; // pridava cislo do stacku a size +=1 } float pop (struct stack *s){ @@ -33,7 +33,7 @@ float pop (struct stack *s){ printf("Stack is empty"); return 1; } - return s->values[--(s->size)]; + return s->values[--(s->size)]; // najprv - size, potom vybera jednu polozku } @@ -55,13 +55,13 @@ int main(){ input[strcspn(input,"\n")]='\0'; char *endpt; - float num = strtod(input,&endpt); + float num = strtod(input,&endpt); // oddeli vsetky cisla (medzerami) a posledne zapise do endpt - if(endpt!=input&&*endpt=='\0'){ + if(endpt!=input&&*endpt=='\0'){ // ked endpt!= plnomu inputu a nie je koncom inputu push(&mystack,num); } - else if (strlen(input)==1&&strchr("+-*/",input[0])){ - if (mystack.size<2){ + else if (strlen(input)==1&&strchr("+-*/",input[0])){ // ak dlzka inputu po upravach 1 a to nojeaky operator + if (mystack.size<2){ // previerka na to ci mame cisla pre operacie printf("not enough operands\n"); return 0;} float b=pop(&mystack); 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..004d27e --- /dev/null +++ b/du4/a_train.c @@ -0,0 +1,58 @@ +#include "a_train.h" +#include +#include +#include + +struct car* add_car(struct car* first,const char* target) { + struct car* new = calloc(1, sizeof(struct car)); + if(!new) return first; + strcpy(new->value,target); + if (first==NULL){ + return new; + } + + struct car* sm = first; + while(sm->next!=NULL){ + sm = sm->next; + } + sm->next = new; + return first; + +} + +void print_train(struct car* first) { + struct car* hlp = first; + while(hlp!=NULL){ + printf("Cielova stanica je %s\n",hlp->value); + hlp = hlp->next; + + } +} + + +void cancel_train(struct car* first) { + if(!first) return; + cancel_train(first->next); + free(first); +} + + +struct car* clear_train(struct car* first, const char* target) { + if(!first) return NULL; + if (strcmp(first->value, target)==0){ + struct car* tmp = first->next; + free(first); + return tmp; + } + struct car* hlp = first; + while (hlp->next!=NULL&&strcmp(hlp->next->value,target)!=0){ + hlp = hlp->next; + } + if (hlp->next!=NULL&&strcmp(hlp->next->value,target)==0){ + struct car* del = hlp->next; + hlp->next=hlp->next->next; + free(del); + } + 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 0000000..07526f7 Binary files /dev/null and b/du4/a_train.o differ 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 0000000..fbdc134 Binary files /dev/null and b/du4/main.o differ diff --git a/du4/train b/du4/train new file mode 100755 index 0000000..4a5e19d Binary files /dev/null and b/du4/train differ