Advertisement
Guest User

Untitled

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