Initializacia
This commit is contained in:
		
							parent
							
								
									d972456309
								
							
						
					
					
						commit
						792ea488bf
					
				
							
								
								
									
										13
									
								
								cv6/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								cv6/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										33
									
								
								cv6/a_station.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								cv6/a_station.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
			
		||||
#include "a_station.h"
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										91
									
								
								cv6/a_station.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								cv6/a_station.h
									
									
									
									
									
										Normal file
									
								
							@ -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
 | 
			
		||||
							
								
								
									
										41
									
								
								cv6/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								cv6/main.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
			
		||||
#include "a_station.h"
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
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("<<<station\n");
 | 
			
		||||
}
 | 
			
		||||
// Pre overenie ci to ide v poriadku
 | 
			
		||||
void test_station(struct station* station){
 | 
			
		||||
   const char* stations[] = {"Presov","Kosice","Banska Bystrica","Banska Stiavnica","Povazska Bystrica","Snina","Humenne","Bratislava","Pezinok","Skalica","Ruzomberok","Bidovce","Michalovce","Poprad","Krompachy","Smizany","Vajkovce","Budimir","Modra","Myslava","Roznava","Gemerska Poloma","Stratena","Dobsina","Michalany","Kostolany"};
 | 
			
		||||
   int size=26;
 | 
			
		||||
   for (int i = 0; i < 50; i++){
 | 
			
		||||
       int s = rand() % size;
 | 
			
		||||
       int c = rand() % 20;
 | 
			
		||||
       printf("%s %d\n",stations[s],c);
 | 
			
		||||
       add_target_capacity(station,stations[s],c);
 | 
			
		||||
       print_station(station);
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(){
 | 
			
		||||
   srand(time(NULL));
 | 
			
		||||
   struct station* station = create_station();
 | 
			
		||||
   test_station(station);
 | 
			
		||||
   destroy_station(station);
 | 
			
		||||
   return 0;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user