Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.02 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define _CRT_SECURE_NO_WARNING
  4. #define Max 10000
  5. #define TRUE 1
  6. #define FALSE 0
  7.  
  8. struct Osoba {
  9. int identyfikator;
  10. int maxCzasWyjscia;
  11. };
  12.  
  13. int SprawdzCzyJestJuzTakaOsobaWBudynku(int * CzasGlobalny, int RejestrZakazWstepu[Max], int * WskaznikZakazuWstepu, struct Osoba OsobyWBudynku[Max], int WskaznikIlosciOsobWBudynku,int sprawdzanyidentyfikator) {
  14. //printf("%d",WskaznikIlosciOsobWBudynku);
  15. for (int i = 0; i < WskaznikIlosciOsobWBudynku; i++) {
  16. if (OsobyWBudynku[i].identyfikator == sprawdzanyidentyfikator) {
  17. return FALSE;
  18.  
  19. }
  20. }
  21. return TRUE;
  22.  
  23. }
  24.  
  25. int SprawdzCzyOsobaNieMaZakazu(int * CzasGlobalny, int RejestrZakazWstepu[Max], int * WskaznikZakazuWstepu, struct Osoba OsobyWBudynku[Max], int WskaznikIlosciOsobWBudynku, int sprawdzanyidentyfikator) {
  26. //printf("%d",WskaznikIlosciOsobWBudynku);
  27. for (int i = 0; i < WskaznikZakazuWstepu; i++) {
  28. if (RejestrZakazWstepu[i] == sprawdzanyidentyfikator) {
  29. return FALSE;
  30.  
  31. }
  32. }
  33. return TRUE;
  34.  
  35. }
  36.  
  37. int ZnajdzIndex(int * CzasGlobalny, int RejestrZakazWstepu[Max], int * WskaznikZakazuWstepu, struct Osoba OsobyWBudynku[Max], int *WskaznikIlosciOsobWBudynku, int sprawdzanyidentyfikator) {
  38. int foundIndex = -1;
  39.  
  40. for (int i = 0; i < *WskaznikIlosciOsobWBudynku; i++) {
  41. //printf("if %d == %d index %d \n", OsobyWBudynku[i]->identyfikator, sprawdzanyidentyfikator, i);
  42. if (OsobyWBudynku[i].identyfikator == sprawdzanyidentyfikator) {
  43. foundIndex = i;
  44. break;
  45. }
  46. }
  47. return foundIndex;
  48. }
  49.  
  50.  
  51. void Menu(int * CzasGlobalny, int RejestrZakazWstepu[Max], int * WskaznikZakazuWstepu, struct Osoba OsobyWBudynku[Max], int * WskaznikIlosciOsobWBudynku) {
  52. char wybor;
  53. *CzasGlobalny = *CzasGlobalny + 1;
  54. printf("Aktualny czas : %d \n", *CzasGlobalny);
  55. printf("%s", "I identyfikator czasWejscia np (I 542 5) - wejscie pracownika\nO - wyjscie pracownika\nR - raport\nX - koniec programu\n-->");
  56. scanf("%c", &wybor);
  57. switch (wybor) {
  58. case 'I': //UWAGA, CAPS LOCK JEST WAŻNY, 'I' to nie to samo co 'i'
  59. ;
  60. int identyfikator;
  61. int naIle;
  62. scanf("%d", &identyfikator);
  63. scanf("%d", &naIle);
  64.  
  65. if (SprawdzCzyOsobaNieMaZakazu(&CzasGlobalny, RejestrZakazWstepu, *WskaznikZakazuWstepu, OsobyWBudynku, *WskaznikIlosciOsobWBudynku, identyfikator) == TRUE) {
  66. if (SprawdzCzyJestJuzTakaOsobaWBudynku(&CzasGlobalny, RejestrZakazWstepu, *WskaznikZakazuWstepu, OsobyWBudynku, *WskaznikIlosciOsobWBudynku, identyfikator) == TRUE) {
  67. OsobyWBudynku[*WskaznikIlosciOsobWBudynku].identyfikator = identyfikator;
  68. OsobyWBudynku[*WskaznikIlosciOsobWBudynku].maxCzasWyjscia = *CzasGlobalny + naIle;
  69. *WskaznikIlosciOsobWBudynku = *WskaznikIlosciOsobWBudynku + 1;
  70. }
  71. else {
  72. printf("%s", "Jest juz taka osoba w budynku!");
  73. }
  74. }
  75. else {
  76. printf("%s", "Zakaz wstepu!");
  77. }
  78.  
  79.  
  80.  
  81. break;
  82. case 'O': //UWAGA, CAPS LOCK JEST WAŻNY, 'O' to nie to samo co 'o'
  83. ;
  84. int identyfikatoro;
  85. scanf("%d", &identyfikatoro);
  86. if (SprawdzCzyJestJuzTakaOsobaWBudynku(&CzasGlobalny, RejestrZakazWstepu, *WskaznikZakazuWstepu, OsobyWBudynku, *WskaznikIlosciOsobWBudynku, identyfikatoro) == TRUE) {
  87.  
  88. printf("%s", "\nBLAD! WYSZLA OSOBA KTORA NIE ZOSTALA ZAREJESTROWANA PRZY WEJSCIU!\n");
  89. }
  90. else {
  91. int indexFound = ZnajdzIndex(&CzasGlobalny, RejestrZakazWstepu, *WskaznikZakazuWstepu, OsobyWBudynku, *&WskaznikIlosciOsobWBudynku, identyfikatoro);
  92. if (indexFound!=-1) {
  93. for (int i = indexFound; i < *WskaznikIlosciOsobWBudynku; i++) {
  94. OsobyWBudynku[i] = OsobyWBudynku[i+1];
  95. }
  96. *WskaznikIlosciOsobWBudynku =* WskaznikIlosciOsobWBudynku - 1;
  97. }
  98. }
  99. break;
  100. case 'R': //UWAGA, CAPS LOCK JEST WAŻNY, 'R' to nie to samo co 'r'
  101. printf("\n\n%s", "Raport o osobach w budynku: \n");
  102. for (int i = 0; i < *WskaznikIlosciOsobWBudynku; i++) {
  103. if (OsobyWBudynku[i].maxCzasWyjscia < *CzasGlobalny) {
  104. printf("W budynku aktualnie jest uzytkownik o id %d I PRZEBYWA ZA DLUGO! \n",OsobyWBudynku[i].identyfikator);
  105. }
  106. else {
  107. printf("W budynku aktualnie jest uzytkownik o id %d \n", OsobyWBudynku[i].identyfikator);
  108. }
  109. }
  110.  
  111. ;
  112. break;
  113. case 'X': //UWAGA, CAPS LOCK JEST WAŻNY, 'X' to nie to samo co 'x'
  114. ;
  115.  
  116. FILE *fp;
  117. if ((fp = fopen("wynik.txt", "a")) == NULL) {
  118. printf("Nie mogę otworzyć pliku test.txt do zapisu!\n");
  119. exit(1);
  120. }
  121.  
  122. for (int i = 0; i < *WskaznikIlosciOsobWBudynku; i++) {
  123. fprintf(fp, "W budynku pozostala osoba o id: %d \n", OsobyWBudynku[i].identyfikator);
  124. }
  125.  
  126. fclose(fp);
  127. exit(0);
  128. break;
  129. default:
  130. break;
  131.  
  132. }
  133.  
  134.  
  135.  
  136. }
  137.  
  138. int main()
  139. {
  140. int CzasGlobalny = 0;
  141. int c;
  142. int RejestrZakazWstepu[Max]; int WskaznikZakazuWstepu = 0;
  143. struct Osoba OsobyWBudynku[Max]; int WskaznikIlosciOsobWBudynku = 0;
  144. Menu(&CzasGlobalny, &RejestrZakazWstepu, &WskaznikZakazuWstepu, OsobyWBudynku, &WskaznikIlosciOsobWBudynku);
  145. while (TRUE) {
  146. while ((c = getchar()) != '\n' && c != EOF) {}
  147. Menu(&CzasGlobalny, &RejestrZakazWstepu, &WskaznikZakazuWstepu, OsobyWBudynku, &WskaznikIlosciOsobWBudynku);
  148. }
  149. system("pause");
  150. return 0;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement