Merge branch 'main' of git.kemt.fei.tuke.sk:ak643du/usaa24
This commit is contained in:
		
						commit
						3b96464bb1
					
				
							
								
								
									
										13
									
								
								cv4/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								cv4/Makefile
									
									
									
									
									
										Normal file
									
								
							| @ -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 | ||||
| 
 | ||||
							
								
								
									
										72
									
								
								cv4/a_train.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								cv4/a_train.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,72 @@ | ||||
| #include "a_train.h" | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| 
 | ||||
| struct car* add_car(struct car* first, const char* target) { | ||||
|     struct car* last = first; | ||||
|     struct car* newcar = calloc(1, sizeof(struct car)); | ||||
|     strcpy(newcar->value, target); | ||||
| 
 | ||||
|     if (last != NULL) { | ||||
|         struct car* current = last; | ||||
|         while (current->next != NULL) { | ||||
|             current = current->next; | ||||
|         } | ||||
|         current->next = newcar; | ||||
|     } else { | ||||
|         last = newcar; | ||||
|         return last; | ||||
|     } | ||||
| 
 | ||||
|     return first; | ||||
| } | ||||
| 
 | ||||
| void print_train(struct car* first) { | ||||
|     if(first != NULL){ | ||||
|         struct car* current = first; | ||||
|         while(current->next != NULL){ | ||||
|             printf("%s\n", current->value); | ||||
|             current = current->next; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void cancel_train(struct car* first) { | ||||
|     struct car* current = first; | ||||
|     while(first != NULL){ | ||||
|         current = current->next; | ||||
|         free(first); | ||||
|         first = current; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| struct car* clear_train(struct car* first, const char* target) { | ||||
|     if (first == NULL) { | ||||
|         return NULL; | ||||
|     } | ||||
| 
 | ||||
|     struct car* current = first; | ||||
|     struct car* previous = NULL; | ||||
| 
 | ||||
|     while (current != NULL && strcmp(current->value, target) == 0) { | ||||
|         struct car* temp = current; | ||||
|         first = current->next; | ||||
|         current = first; | ||||
|         free(temp); | ||||
|     } | ||||
| 
 | ||||
|     while (current != NULL) { | ||||
|         if (strcmp(current->value, target) == 0) { | ||||
|             previous->next = current->next; | ||||
|             free(current); | ||||
|             current = previous->next; | ||||
|         } else { | ||||
|             previous = current; | ||||
|             current = current->next; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return first; | ||||
| } | ||||
							
								
								
									
										51
									
								
								cv4/a_train.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								cv4/a_train.h
									
									
									
									
									
										Normal file
									
								
							| @ -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
 | ||||
							
								
								
									
										17
									
								
								cv4/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								cv4/main.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | ||||
| #include "a_train.h" | ||||
| #include <stdio.h> | ||||
| 
 | ||||
| // 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); | ||||
|     train = clear_train(train,"Levoca"); | ||||
|     print_train(train); | ||||
|     cancel_train(train); | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user