Advertisement
Guest User

Untitled

a guest
May 25th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.84 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct Nauczyciel
  6. {
  7. char nazwisko[30];
  8. struct Nauczyciel* nast;
  9. struct Zajecia* zajecia;
  10. };
  11.  
  12. struct Zajecia
  13. {
  14. int godz_start;
  15. int min_start;
  16. char dzien_tyg[10];
  17. char grupa[10];
  18. char przedmiot[30];
  19. struct Zajecia* pop;
  20. struct Zajecia* nast;
  21. };
  22.  
  23. int nr_dnia_tyg(char *dzien_tyg)
  24. {
  25. if (strcmp(dzien_tyg, 'pn')==0)
  26. return 1;
  27. if (strcmp(dzien_tyg, 'wt')==0)
  28. return 2;
  29. if (strcmp(dzien_tyg, 'sr')==0)
  30. return 3;
  31. if (strcmp(dzien_tyg, 'czw')==0)
  32. return 4;
  33. if (strcmp(dzien_tyg, 'pt')==0)
  34. return 5;
  35. if (strcmp(dzien_tyg, 'sb')==0)
  36. return 6;
  37. if (strcmp(dzien_tyg, 'nd')==0)
  38. return 7;
  39. return 0;
  40. }
  41.  
  42. int porownywanie_zajec(struct Zajecia *zajecia1, struct Zajecia *zajecia2)
  43. {
  44. if(nr_dnia_tyg(zajecia1->dzien_tyg) > nr_dnia_tyg(zajecia2->dzien_tyg))
  45. return 1;
  46. if(nr_dnia_tyg(zajecia1->dzien_tyg) < nr_dnia_tyg(zajecia2->dzien_tyg))
  47. return -1;
  48. if(nr_dnia_tyg(zajecia1->dzien_tyg) == nr_dnia_tyg(zajecia2->dzien_tyg))
  49. {
  50. if(zajecia1->godz_start > zajecia2->godz_start)
  51. return 1;
  52. if(zajecia1->godz_start < zajecia2->godz_start)
  53. return -1;
  54. if(zajecia1->godz_start == zajecia2->godz_start)
  55. {
  56. if(zajecia1->min_start > zajecia2->min_start)
  57. return 1;
  58. if(zajecia1->min_start < zajecia2->min_start)
  59. return -1;
  60. if(zajecia1->min_start == zajecia2->min_start)
  61. return 0;
  62. }
  63. }
  64. return 2;
  65. }
  66.  
  67.  
  68. int main()
  69. {
  70. int godz_start,godz_stop, min_start, min_stop;
  71. char dzien_tyg[10];
  72. char grupa[10];
  73. char nazwisko[30];
  74. char przedmiot[30];
  75. int i;
  76. FILE *plik;
  77. if((plik = fopen("test.txt", "r"))==NULL)
  78. {
  79. printf("Nie udalo sie otworzyc pliku\n");
  80. }
  81.  
  82.  
  83. //struct Nauczyciel * nauczyciel1 = (struct Nauczyciel *)malloc(sizeof(struct Nauczyciel));
  84. //struct Zajecia * zajecia1 = (struct Zajecia *)malloc(sizeof(struct Zajecia));
  85. struct Nauczyciel * nauczyciel = NULL;
  86. struct Nauczyciel *pierwszy_nauczyciel= NULL;
  87. struct Zajecia *zajecia = NULL;
  88. struct Zajecia *ostatnie_zajecia = NULL;
  89.  
  90.  
  91.  
  92.  
  93. while(!feof(plik))
  94. {
  95. nauczyciel=NULL;
  96. fscanf(plik,"%d:%d-%d:%d %s %s %s %s",&godz_start,&min_start,&godz_stop,&min_stop, dzien_tyg, grupa, nazwisko, przedmiot );
  97.  
  98. struct Nauczyciel * wsk = pierwszy_nauczyciel;
  99. // 1. sprawdzanie czy nauczyciel ju¿ istnieje
  100. while(wsk != NULL)
  101. {
  102. if (strcmp(wsk->nazwisko, nazwisko) == 0)
  103. {
  104. nauczyciel = wsk;
  105. break;
  106. }
  107. wsk = wsk->nast;
  108. }
  109.  
  110. printf("po 1\n");
  111. // 2. je¿eli nauczyciela nie znale¿liœmy to tworzymy i dodajemy do listy nauczycieli
  112. if (nauczyciel == NULL)
  113. {
  114. nauczyciel = (struct Nauczyciel*)malloc(sizeof(struct Nauczyciel));
  115. strcpy(nauczyciel->nazwisko, nazwisko);
  116. nauczyciel->zajecia = NULL;
  117. nauczyciel->nast = pierwszy_nauczyciel;
  118. pierwszy_nauczyciel = nauczyciel;
  119. }
  120. printf("po 2\n");
  121. // 3. Tworzymy zajecia
  122. zajecia = (struct Zajecia *)malloc(sizeof(struct Zajecia));
  123. zajecia->godz_start=godz_start;
  124. zajecia->min_start=min_start;
  125. strcpy(zajecia->dzien_tyg, dzien_tyg);
  126. strcpy(zajecia->grupa, grupa);
  127. strcpy(zajecia->przedmiot, przedmiot);
  128. zajecia->pop = NULL;
  129. zajecia->nast = NULL;
  130.  
  131. printf("po 3\n");
  132. // 4. Dodajemy zajecia na poczatek listy zajec nauczyciela
  133.  
  134. if (nauczyciel->zajecia == NULL)
  135. {
  136. nauczyciel->zajecia = zajecia;
  137. printf("po 4.1\n");
  138. } else if(porownywanie_zajec(nauczyciel->zajecia, zajecia) == -1)
  139. {printf("po 4.2\n");
  140. zajecia->nast = nauczyciel->zajecia;
  141. nauczyciel->zajecia->pop = zajecia;
  142. nauczyciel->zajecia = zajecia;
  143.  
  144. } else
  145. {
  146. struct Zajecia * wsk = nauczyciel->zajecia;
  147.  
  148. while(wsk != NULL)
  149. {
  150.  
  151. if(porownywanie_zajec(nauczyciel->zajecia, wsk) == -1)
  152. {
  153. wsk->pop = zajecia;
  154. zajecia->nast = wsk;
  155. break;
  156. printf("po 4.3\n");
  157. }
  158.  
  159. if (wsk->nast == NULL)
  160. {
  161. wsk->nast = zajecia;
  162. zajecia->pop = wsk;
  163. break;
  164. }
  165.  
  166. wsk = wsk->nast;
  167. }
  168. }
  169. }
  170. printf("po 4\n");
  171.  
  172. char tekst[] = "Kowalski";
  173. if(strcmp(nauczyciel->nazwisko, tekst) == 0)
  174. {
  175. struct Zajecia *temp = nauczyciel->zajecia;
  176. while(temp)
  177. {
  178. printf("%s - %d:%d %s %s\n", temp->dzien_tyg, temp->godz_start, temp->min_start, temp->grupa, temp->przedmiot);
  179. temp=temp->nast;
  180. }
  181.  
  182. }
  183. //printf("%s - %d:%d %s %s\n", nauczyciel1->nazwisko, nauczyciel1->zajecia->godz_start, nauczyciel1->zajecia->min_start, nauczyciel1->zajecia->grupa, nauczyciel1->zajecia->przedmiot);
  184.  
  185. FILE *plik_wyjsciowy;
  186. plik_wyjsciowy = fopen(strcat(nauczyciel->nazwisko, ".txt"), "w");
  187. fprintf("%s:\n%d:%d %s %s\n", nauczyciel->zajecia->dzien_tyg, nauczyciel->zajecia->godz_start, nauczyciel->zajecia->min_start, nauczyciel->zajecia->grupa, nauczyciel->zajecia->przedmiot);
  188.  
  189.  
  190. fclose(plik);
  191. return 0;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement