Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma warning(disable : 4996)
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct maszo {
- char maszo_nev[50];
- char maszott_utak_neve[50];
- char maszo_kategoriaja[10];
- int maszo_zonai;
- double ido;
- struct maszo* kov_maszo;
- }maszo;
- typedef struct ut {
- char ut_neve[50];
- int zonak_szama;
- char ut_nehezsege[10];
- maszo* maszok_listaja;
- maszo* elso_halado;
- maszo* elso_profi;
- struct ut* kov_ut;
- struct ut* elozo_ut;
- }ut;
- typedef struct {
- ut* eleje;
- ut* vege;
- } strazsa;
- typedef struct maszo_nevek_listaja
- {
- char maszo_neve[50];
- struct maszo_nevek_listaja* kov;
- }maszo_nevek_listaja;
- typedef struct verseny {
- char verseny_neve[50];
- strazsa* strazsara;
- maszo_nevek_listaja* nevsor;
- }verseny;
- void clrscr()
- {
- system("@cls||clear");
- }
- strazsa* ut_lista_letrehozo(void)
- {
- strazsa* s=(strazsa*)malloc(sizeof(strazsa));
- s->eleje = (ut*)malloc(sizeof(ut));
- s->vege = (ut*)malloc(sizeof(ut));
- s->eleje->kov_ut = s->vege;
- s->vege->elozo_ut = s->eleje;
- return s;
- }
- void ut_listaba_szur(ut* elozo, ut* kovetkezo, char uj_ut_neve[], int uj_zonak_szama, char uj_ut_nehezsege[])
- {
- ut* uj = (ut*)malloc(sizeof(ut));
- strcpy(uj->ut_neve, uj_ut_neve);
- uj->zonak_szama = uj_zonak_szama;
- strcpy(uj->ut_nehezsege, uj_ut_nehezsege);
- uj->maszok_listaja = NULL;
- uj->elso_halado = NULL;
- uj->elso_profi = NULL;
- uj->elozo_ut = elozo;
- elozo->kov_ut = uj;
- uj->kov_ut = kovetkezo;
- kovetkezo->elozo_ut = uj;
- }
- void ut_beolvas(char* fajlnev, strazsa* hova)
- {
- FILE* fajl;
- char file_ut_neve[50];
- int file_zonak_szama;
- char file_ut_nehezsege[10];
- fajl = fopen(fajlnev, "r");
- while (fscanf(fajl, "%[^,],%d,%s\n", file_ut_neve, &file_zonak_szama, file_ut_nehezsege) == 3)
- ut_listaba_szur(hova->vege->elozo_ut, hova->vege, file_ut_neve, file_zonak_szama, file_ut_nehezsege);
- fclose(fajl);
- }
- void ut_lista_kiir(strazsa* kiirando)
- {
- ut* seged;
- for (seged = kiirando->eleje->kov_ut; seged != kiirando->vege; seged = seged->kov_ut)
- printf("%s %d %s\n", seged->ut_neve, seged->zonak_szama, seged->ut_nehezsege);
- }
- maszo_nevek_listaja* maszo_nev_listaba_szur(maszo_nevek_listaja *seged, char uj_maszo_neve[])
- {
- maszo_nevek_listaja *uj = (maszo_nevek_listaja*)malloc(sizeof(maszo_nevek_listaja));
- strcpy(uj->maszo_neve, uj_maszo_neve);
- uj->kov = seged;
- seged = uj;
- return uj;
- }
- void maszo_nev_lista_kiir(maszo_nevek_listaja *eleje)
- {
- maszo_nevek_listaja *seged;
- printf("\n");
- for (seged = eleje; seged->kov != NULL; seged = seged->kov)
- printf("%s\n",seged->maszo_neve);
- }
- void maszo_listaba_szur(strazsa* utak, char uj_maszo_neve[], char uj_maszott_ut[], char uj_maszo_kategoriaja[], int uj_maszo_zonai, double uj_maszo_ideje)
- {
- maszo* uj = (maszo*)malloc(sizeof(maszo));
- strcpy(uj->maszo_nev, uj_maszo_neve);
- strcpy(uj->maszott_utak_neve, uj_maszott_ut);
- strcpy(uj->maszo_kategoriaja, uj_maszo_kategoriaja);
- uj->maszo_zonai = uj_maszo_zonai;
- uj->ido = uj_maszo_ideje;
- int torlo = 1;
- ut* seged = utak->eleje->kov_ut;
- while (seged != utak->vege)
- {
- if (strcmp(seged->ut_neve, uj_maszott_ut) == 0)
- {
- /*
- if (strcmp(uj->maszo_kategoriaja, "amator")==0)
- {
- if (seged->maszok_listaja == NULL)
- {
- seged->elso_halado = uj;
- seged->elso_profi = uj;
- }
- uj->kov_maszo = seged->maszok_listaja;
- seged->maszok_listaja = uj;
- }
- if (strcmp(uj->maszo_kategoriaja, "halado")==0)
- {
- }
- if (strcmp(uj->maszo_kategoriaja, "profi")==0)
- {
- }
- */
- uj->kov_maszo = seged->maszok_listaja;
- seged->maszok_listaja = uj;
- torlo = 0;
- }
- seged = seged->kov_ut;
- }
- if (torlo == 1)
- {
- printf("Hibas adat ebben az utban: %s\n", uj_maszott_ut);
- free(uj);
- }
- }
- maszo_nevek_listaja* maszo_beolvas(char* fajlnev, strazsa* hova, maszo_nevek_listaja* eleje)
- {
- FILE* file;
- char file_maszo_nev[50];
- char file_maszott_utak_neve[50];
- char file_maszo_kategoriaja[10];
- int file_maszo_zonai;
- double file_ido;
- char file_maszo_vege[10];
- printf("\n\n");
- file = fopen(fajlnev, "r");
- do
- {
- fscanf(file, "%[^,], %[^,], ", file_maszo_nev, file_maszo_kategoriaja);
- eleje=maszo_nev_listaba_szur(eleje, file_maszo_nev);
- while (fscanf(file, "(%[^,], %d, %lf), ", file_maszott_utak_neve, &file_maszo_zonai, &file_ido) == 3)
- maszo_listaba_szur(hova, file_maszo_nev, file_maszott_utak_neve, file_maszo_kategoriaja, file_maszo_zonai, file_ido);
- } while (fscanf(file, "%s\n", file_maszo_vege) == 1);
- maszo_nevek_listaja *seged;
- for (seged = eleje->kov; seged != NULL; seged = seged->kov)
- printf("%s\n", seged->maszo_neve);
- return eleje;
- }
- void elso_maszo_lista_kiir(strazsa* kiirando)
- {
- maszo* seged;
- for (seged = kiirando->eleje->kov_ut->kov_ut->maszok_listaja; seged->kov_maszo != NULL; seged = seged->kov_maszo)
- printf("\n%s %s %s %d %f", seged->maszo_nev, seged->maszott_utak_neve, seged->maszo_kategoriaja, seged->maszo_zonai, seged->ido);
- }
- double kategoria_zona_atlag(strazsa* utak, char melyik_kategoria[])
- {
- double atlag = 0;
- int db = 0;
- ut* ut_seged;
- maszo* maszo_seged;
- for (ut_seged = utak->eleje->kov_ut; ut_seged != utak->vege; ut_seged = ut_seged->kov_ut)
- for (maszo_seged = ut_seged->maszok_listaja; maszo_seged != NULL; maszo_seged = maszo_seged->kov_maszo)
- if (strcmp(maszo_seged->maszo_kategoriaja, melyik_kategoria) == 0)
- {
- atlag += maszo_seged->maszo_zonai;
- db++;
- }
- return atlag / db;
- }
- void tovabbjutok_kiiro(strazsa* utak, maszo_nevek_listaja *eleje, char melyik_kategoria[], double atlag)
- {
- ut* ut_seged;
- maszo* maszo_seged;
- maszo_nevek_listaja *nevsor_seged;
- double maszo_atlag = 0;
- int maszo_db = 0;
- /*
- for (nevsor_seged = eleje; nevsor_seged != NULL; nevsor_seged=nevsor_seged->kov)
- {
- for (ut_seged = utak->eleje->kov_ut; ut_seged != utak->vege; ut_seged = ut_seged->kov_ut)
- for (maszo_seged = ut_seged->maszok_listaja; maszo_seged != NULL; maszo_seged = maszo_seged->kov_maszo)
- if (strcmp(maszo_seged->maszo_kategoriaja, melyik_kategoria) == 0)
- if(strcmp(nevsor_seged->maszo_neve, maszo_seged->maszo_nev) == 0)
- {
- maszo_atlag += maszo_seged->maszo_zonai;
- maszo_db++;
- }
- if (((maszo_atlag) / maszo_db) >= atlag)
- printf("\n%s\n", nevsor_seged->maszo_neve);
- maszo_atlag = 0;
- maszo_db = 0;
- }
- */
- }
- verseny* verseny_letrehozo(verseny* letrehoz)
- {
- clrscr();
- printf("Kerem adja meg a verseny nevet: ");
- scanf("%s", letrehoz->verseny_neve);
- char utakat_tartalmazo_txt[50], maszokat_tartalmazo_txt[50];
- printf("Melyik txt-bÅl olvassunk be az utakat? ");
- scanf("%s", utakat_tartalmazo_txt);
- printf("Melyik txt-bÅl olvassuk be a maszokat? ");
- scanf("%s", maszokat_tartalmazo_txt);
- ut_beolvas(utakat_tartalmazo_txt, letrehoz->strazsara);
- letrehoz->nevsor = maszo_beolvas(maszokat_tartalmazo_txt, letrehoz->strazsara, letrehoz->nevsor);
- char kilep[20];
- printf("(1)Visszalep\n");
- if (scanf("%s", kilep) == 1);
- clrscr();
- return letrehoz;
- }
- void tovabbjutok(verseny* letrehoz)
- {
- clrscr();
- char melyik_kategoria[10];
- printf("Melyik kategoriaba irjam ki a tovabbjutokat ? ");
- scanf("%s", melyik_kategoria);
- double atlag;
- atlag = kategoria_zona_atlag(letrehoz->strazsara, melyik_kategoria);
- tovabbjutok_kiiro(letrehoz->strazsara, letrehoz->nevsor, melyik_kategoria, atlag);
- char kilep[20];
- printf("(1)Visszalep\n");
- if (scanf("%s", kilep) == 1);
- clrscr();
- }
- int main(void)
- {
- verseny *uj = (verseny*)malloc(sizeof(verseny));
- strazsa *letrehozo_strazsa = ut_lista_letrehozo();
- maszo_nevek_listaja *letrehozo_nevsor = (maszo_nevek_listaja*)malloc(sizeof(maszo_nevek_listaja));
- uj->strazsara = letrehozo_strazsa;
- uj->nevsor = letrehozo_nevsor;
- uj=verseny_letrehozo(uj);
- //tovabbjutok(uj);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement