daily pastebin goal
31%
SHARE
TWEET

Untitled

a guest Jan 17th, 2018 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
Top