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