Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.80 KB | None | 0 0
  1. #pragma warning(disable : 4996)
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. typedef struct maszo {
  7. char maszo_nev[50];
  8. char maszott_utak_neve[50];
  9. char maszo_kategoriaja[10];
  10. int maszo_zonai;
  11. double ido;
  12. struct maszo* kov_maszo;
  13. }maszo;
  14.  
  15. typedef struct ut {
  16. char ut_neve[50];
  17. int zonak_szama;
  18. char ut_nehezsege[10];
  19. maszo* maszok_listaja;
  20. maszo* elso_halado;
  21. maszo* elso_profi;
  22. struct ut* kov_ut;
  23. struct ut* elozo_ut;
  24. }ut;
  25.  
  26. typedef struct {
  27. ut* eleje;
  28. ut* vege;
  29. } strazsa;
  30.  
  31. typedef struct maszo_nevek_listaja
  32. {
  33. char maszo_neve[50];
  34. struct maszo_nevek_listaja* kov;
  35. }maszo_nevek_listaja;
  36.  
  37. typedef struct verseny {
  38. char verseny_neve[50];
  39. strazsa* strazsara;
  40. maszo_nevek_listaja* nevsor;
  41. }verseny;
  42.  
  43. void clrscr()
  44. {
  45. system("@cls||clear");
  46. }
  47.  
  48.  
  49.  
  50.  
  51.  
  52. strazsa* ut_lista_letrehozo(void)
  53. {
  54. strazsa* s=(strazsa*)malloc(sizeof(strazsa));
  55. s->eleje = (ut*)malloc(sizeof(ut));
  56. s->vege = (ut*)malloc(sizeof(ut));
  57. s->eleje->kov_ut = s->vege;
  58. s->vege->elozo_ut = s->eleje;
  59. return s;
  60. }
  61.  
  62. void ut_listaba_szur(ut* elozo, ut* kovetkezo, char uj_ut_neve[], int uj_zonak_szama, char uj_ut_nehezsege[])
  63. {
  64. ut* uj = (ut*)malloc(sizeof(ut));
  65.  
  66. strcpy(uj->ut_neve, uj_ut_neve);
  67. uj->zonak_szama = uj_zonak_szama;
  68. strcpy(uj->ut_nehezsege, uj_ut_nehezsege);
  69.  
  70. uj->maszok_listaja = NULL;
  71. uj->elso_halado = NULL;
  72. uj->elso_profi = NULL;
  73.  
  74. uj->elozo_ut = elozo;
  75. elozo->kov_ut = uj;
  76. uj->kov_ut = kovetkezo;
  77. kovetkezo->elozo_ut = uj;
  78. }
  79.  
  80. void ut_beolvas(char* fajlnev, strazsa* hova)
  81. {
  82. FILE* fajl;
  83.  
  84. char file_ut_neve[50];
  85. int file_zonak_szama;
  86. char file_ut_nehezsege[10];
  87.  
  88. fajl = fopen(fajlnev, "r");
  89. while (fscanf(fajl, "%[^,],%d,%s\n", file_ut_neve, &file_zonak_szama, file_ut_nehezsege) == 3)
  90. ut_listaba_szur(hova->vege->elozo_ut, hova->vege, file_ut_neve, file_zonak_szama, file_ut_nehezsege);
  91.  
  92. fclose(fajl);
  93. }
  94.  
  95. void ut_lista_kiir(strazsa* kiirando)
  96. {
  97. ut* seged;
  98. for (seged = kiirando->eleje->kov_ut; seged != kiirando->vege; seged = seged->kov_ut)
  99. printf("%s %d %s\n", seged->ut_neve, seged->zonak_szama, seged->ut_nehezsege);
  100. }
  101.  
  102.  
  103.  
  104.  
  105.  
  106. maszo_nevek_listaja* maszo_nev_listaba_szur(maszo_nevek_listaja *seged, char uj_maszo_neve[])
  107. {
  108. maszo_nevek_listaja *uj = (maszo_nevek_listaja*)malloc(sizeof(maszo_nevek_listaja));
  109. strcpy(uj->maszo_neve, uj_maszo_neve);
  110. uj->kov = seged;
  111. seged = uj;
  112. return uj;
  113. }
  114.  
  115. void maszo_nev_lista_kiir(maszo_nevek_listaja *eleje)
  116. {
  117. maszo_nevek_listaja *seged;
  118. printf("\n");
  119. for (seged = eleje; seged->kov != NULL; seged = seged->kov)
  120. printf("%s\n",seged->maszo_neve);
  121. }
  122.  
  123. 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)
  124. {
  125. maszo* uj = (maszo*)malloc(sizeof(maszo));
  126.  
  127. strcpy(uj->maszo_nev, uj_maszo_neve);
  128. strcpy(uj->maszott_utak_neve, uj_maszott_ut);
  129. strcpy(uj->maszo_kategoriaja, uj_maszo_kategoriaja);
  130. uj->maszo_zonai = uj_maszo_zonai;
  131. uj->ido = uj_maszo_ideje;
  132.  
  133. int torlo = 1;
  134.  
  135. ut* seged = utak->eleje->kov_ut;
  136. while (seged != utak->vege)
  137. {
  138. if (strcmp(seged->ut_neve, uj_maszott_ut) == 0)
  139. {
  140. /*
  141. if (strcmp(uj->maszo_kategoriaja, "amator")==0)
  142. {
  143. if (seged->maszok_listaja == NULL)
  144. {
  145. seged->elso_halado = uj;
  146. seged->elso_profi = uj;
  147. }
  148. uj->kov_maszo = seged->maszok_listaja;
  149. seged->maszok_listaja = uj;
  150. }
  151. if (strcmp(uj->maszo_kategoriaja, "halado")==0)
  152. {
  153.  
  154. }
  155. if (strcmp(uj->maszo_kategoriaja, "profi")==0)
  156. {
  157.  
  158. }
  159. */
  160. uj->kov_maszo = seged->maszok_listaja;
  161. seged->maszok_listaja = uj;
  162. torlo = 0;
  163. }
  164. seged = seged->kov_ut;
  165. }
  166. if (torlo == 1)
  167. {
  168. printf("Hibas adat ebben az utban: %s\n", uj_maszott_ut);
  169. free(uj);
  170. }
  171. }
  172.  
  173. maszo_nevek_listaja* maszo_beolvas(char* fajlnev, strazsa* hova, maszo_nevek_listaja* eleje)
  174. {
  175. FILE* file;
  176.  
  177. char file_maszo_nev[50];
  178. char file_maszott_utak_neve[50];
  179. char file_maszo_kategoriaja[10];
  180. int file_maszo_zonai;
  181. double file_ido;
  182.  
  183. char file_maszo_vege[10];
  184.  
  185. printf("\n\n");
  186. file = fopen(fajlnev, "r");
  187. do
  188. {
  189. fscanf(file, "%[^,], %[^,], ", file_maszo_nev, file_maszo_kategoriaja);
  190. eleje=maszo_nev_listaba_szur(eleje, file_maszo_nev);
  191. while (fscanf(file, "(%[^,], %d, %lf), ", file_maszott_utak_neve, &file_maszo_zonai, &file_ido) == 3)
  192. maszo_listaba_szur(hova, file_maszo_nev, file_maszott_utak_neve, file_maszo_kategoriaja, file_maszo_zonai, file_ido);
  193. } while (fscanf(file, "%s\n", file_maszo_vege) == 1);
  194.  
  195. maszo_nevek_listaja *seged;
  196. for (seged = eleje->kov; seged != NULL; seged = seged->kov)
  197. printf("%s\n", seged->maszo_neve);
  198.  
  199. return eleje;
  200. }
  201.  
  202. void elso_maszo_lista_kiir(strazsa* kiirando)
  203. {
  204. maszo* seged;
  205. for (seged = kiirando->eleje->kov_ut->kov_ut->maszok_listaja; seged->kov_maszo != NULL; seged = seged->kov_maszo)
  206. printf("\n%s %s %s %d %f", seged->maszo_nev, seged->maszott_utak_neve, seged->maszo_kategoriaja, seged->maszo_zonai, seged->ido);
  207. }
  208.  
  209.  
  210.  
  211.  
  212. double kategoria_zona_atlag(strazsa* utak, char melyik_kategoria[])
  213. {
  214. double atlag = 0;
  215. int db = 0;
  216. ut* ut_seged;
  217. maszo* maszo_seged;
  218. for (ut_seged = utak->eleje->kov_ut; ut_seged != utak->vege; ut_seged = ut_seged->kov_ut)
  219. for (maszo_seged = ut_seged->maszok_listaja; maszo_seged != NULL; maszo_seged = maszo_seged->kov_maszo)
  220. if (strcmp(maszo_seged->maszo_kategoriaja, melyik_kategoria) == 0)
  221. {
  222. atlag += maszo_seged->maszo_zonai;
  223. db++;
  224. }
  225. return atlag / db;
  226.  
  227. }
  228.  
  229. void tovabbjutok_kiiro(strazsa* utak, maszo_nevek_listaja *eleje, char melyik_kategoria[], double atlag)
  230. {
  231. ut* ut_seged;
  232. maszo* maszo_seged;
  233. maszo_nevek_listaja *nevsor_seged;
  234. double maszo_atlag = 0;
  235. int maszo_db = 0;
  236. /*
  237. for (nevsor_seged = eleje; nevsor_seged != NULL; nevsor_seged=nevsor_seged->kov)
  238. {
  239. for (ut_seged = utak->eleje->kov_ut; ut_seged != utak->vege; ut_seged = ut_seged->kov_ut)
  240. for (maszo_seged = ut_seged->maszok_listaja; maszo_seged != NULL; maszo_seged = maszo_seged->kov_maszo)
  241. if (strcmp(maszo_seged->maszo_kategoriaja, melyik_kategoria) == 0)
  242. if(strcmp(nevsor_seged->maszo_neve, maszo_seged->maszo_nev) == 0)
  243. {
  244. maszo_atlag += maszo_seged->maszo_zonai;
  245. maszo_db++;
  246. }
  247. if (((maszo_atlag) / maszo_db) >= atlag)
  248. printf("\n%s\n", nevsor_seged->maszo_neve);
  249. maszo_atlag = 0;
  250. maszo_db = 0;
  251. }
  252. */
  253. }
  254.  
  255. verseny* verseny_letrehozo(verseny* letrehoz)
  256. {
  257. clrscr();
  258.  
  259. printf("Kerem adja meg a verseny nevet: ");
  260. scanf("%s", letrehoz->verseny_neve);
  261.  
  262. char utakat_tartalmazo_txt[50], maszokat_tartalmazo_txt[50];
  263. printf("Melyik txt-ből olvassunk be az utakat? ");
  264. scanf("%s", utakat_tartalmazo_txt);
  265. printf("Melyik txt-ből olvassuk be a maszokat? ");
  266. scanf("%s", maszokat_tartalmazo_txt);
  267.  
  268. ut_beolvas(utakat_tartalmazo_txt, letrehoz->strazsara);
  269. letrehoz->nevsor = maszo_beolvas(maszokat_tartalmazo_txt, letrehoz->strazsara, letrehoz->nevsor);
  270.  
  271. char kilep[20];
  272. printf("(1)Visszalep\n");
  273. if (scanf("%s", kilep) == 1);
  274.  
  275. clrscr();
  276.  
  277. return letrehoz;
  278. }
  279.  
  280. void tovabbjutok(verseny* letrehoz)
  281. {
  282. clrscr();
  283.  
  284. char melyik_kategoria[10];
  285. printf("Melyik kategoriaba irjam ki a tovabbjutokat ? ");
  286. scanf("%s", melyik_kategoria);
  287.  
  288. double atlag;
  289. atlag = kategoria_zona_atlag(letrehoz->strazsara, melyik_kategoria);
  290. tovabbjutok_kiiro(letrehoz->strazsara, letrehoz->nevsor, melyik_kategoria, atlag);
  291.  
  292. char kilep[20];
  293. printf("(1)Visszalep\n");
  294. if (scanf("%s", kilep) == 1);
  295.  
  296. clrscr();
  297. }
  298.  
  299. int main(void)
  300. {
  301. verseny *uj = (verseny*)malloc(sizeof(verseny));
  302. strazsa *letrehozo_strazsa = ut_lista_letrehozo();
  303. maszo_nevek_listaja *letrehozo_nevsor = (maszo_nevek_listaja*)malloc(sizeof(maszo_nevek_listaja));
  304. uj->strazsara = letrehozo_strazsa;
  305. uj->nevsor = letrehozo_nevsor;
  306. uj=verseny_letrehozo(uj);
  307.  
  308. //tovabbjutok(uj);
  309.  
  310. return 0;
  311. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement