Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define _CRT_SECURE_NO_WARNING
- #define Max 10000
- #define TRUE 1
- #define FALSE 0
- struct Osoba {
- int identyfikator;
- int maxCzasWyjscia;
- };
- int SprawdzCzyJestJuzTakaOsobaWBudynku(int * CzasGlobalny, int RejestrZakazWstepu[Max], int * WskaznikZakazuWstepu, struct Osoba OsobyWBudynku[Max], int WskaznikIlosciOsobWBudynku,int sprawdzanyidentyfikator) {
- //printf("%d",WskaznikIlosciOsobWBudynku);
- for (int i = 0; i < WskaznikIlosciOsobWBudynku; i++) {
- if (OsobyWBudynku[i].identyfikator == sprawdzanyidentyfikator) {
- return FALSE;
- }
- }
- return TRUE;
- }
- int SprawdzCzyOsobaNieMaZakazu(int * CzasGlobalny, int RejestrZakazWstepu[Max], int * WskaznikZakazuWstepu, struct Osoba OsobyWBudynku[Max], int WskaznikIlosciOsobWBudynku, int sprawdzanyidentyfikator) {
- //printf("%d",WskaznikIlosciOsobWBudynku);
- for (int i = 0; i < WskaznikZakazuWstepu; i++) {
- if (RejestrZakazWstepu[i] == sprawdzanyidentyfikator) {
- return FALSE;
- }
- }
- return TRUE;
- }
- int ZnajdzIndex(int * CzasGlobalny, int RejestrZakazWstepu[Max], int * WskaznikZakazuWstepu, struct Osoba OsobyWBudynku[Max], int *WskaznikIlosciOsobWBudynku, int sprawdzanyidentyfikator) {
- int foundIndex = -1;
- for (int i = 0; i < *WskaznikIlosciOsobWBudynku; i++) {
- //printf("if %d == %d index %d \n", OsobyWBudynku[i]->identyfikator, sprawdzanyidentyfikator, i);
- if (OsobyWBudynku[i].identyfikator == sprawdzanyidentyfikator) {
- foundIndex = i;
- break;
- }
- }
- return foundIndex;
- }
- void Menu(int * CzasGlobalny, int RejestrZakazWstepu[Max], int * WskaznikZakazuWstepu, struct Osoba OsobyWBudynku[Max], int * WskaznikIlosciOsobWBudynku) {
- char wybor;
- *CzasGlobalny = *CzasGlobalny + 1;
- printf("Aktualny czas : %d \n", *CzasGlobalny);
- printf("%s", "I identyfikator czasWejscia np (I 542 5) - wejscie pracownika\nO - wyjscie pracownika\nR - raport\nX - koniec programu\n-->");
- scanf("%c", &wybor);
- switch (wybor) {
- case 'I': //UWAGA, CAPS LOCK JEST WAŻNY, 'I' to nie to samo co 'i'
- ;
- int identyfikator;
- int naIle;
- scanf("%d", &identyfikator);
- scanf("%d", &naIle);
- if (SprawdzCzyOsobaNieMaZakazu(&CzasGlobalny, RejestrZakazWstepu, *WskaznikZakazuWstepu, OsobyWBudynku, *WskaznikIlosciOsobWBudynku, identyfikator) == TRUE) {
- if (SprawdzCzyJestJuzTakaOsobaWBudynku(&CzasGlobalny, RejestrZakazWstepu, *WskaznikZakazuWstepu, OsobyWBudynku, *WskaznikIlosciOsobWBudynku, identyfikator) == TRUE) {
- OsobyWBudynku[*WskaznikIlosciOsobWBudynku].identyfikator = identyfikator;
- OsobyWBudynku[*WskaznikIlosciOsobWBudynku].maxCzasWyjscia = *CzasGlobalny + naIle;
- *WskaznikIlosciOsobWBudynku = *WskaznikIlosciOsobWBudynku + 1;
- }
- else {
- printf("%s", "Jest juz taka osoba w budynku!");
- }
- }
- else {
- printf("%s", "Zakaz wstepu!");
- }
- break;
- case 'O': //UWAGA, CAPS LOCK JEST WAŻNY, 'O' to nie to samo co 'o'
- ;
- int identyfikatoro;
- scanf("%d", &identyfikatoro);
- if (SprawdzCzyJestJuzTakaOsobaWBudynku(&CzasGlobalny, RejestrZakazWstepu, *WskaznikZakazuWstepu, OsobyWBudynku, *WskaznikIlosciOsobWBudynku, identyfikatoro) == TRUE) {
- printf("%s", "\nBLAD! WYSZLA OSOBA KTORA NIE ZOSTALA ZAREJESTROWANA PRZY WEJSCIU!\n");
- }
- else {
- int indexFound = ZnajdzIndex(&CzasGlobalny, RejestrZakazWstepu, *WskaznikZakazuWstepu, OsobyWBudynku, *&WskaznikIlosciOsobWBudynku, identyfikatoro);
- if (indexFound!=-1) {
- for (int i = indexFound; i < *WskaznikIlosciOsobWBudynku; i++) {
- OsobyWBudynku[i] = OsobyWBudynku[i+1];
- }
- *WskaznikIlosciOsobWBudynku =* WskaznikIlosciOsobWBudynku - 1;
- }
- }
- break;
- case 'R': //UWAGA, CAPS LOCK JEST WAŻNY, 'R' to nie to samo co 'r'
- printf("\n\n%s", "Raport o osobach w budynku: \n");
- for (int i = 0; i < *WskaznikIlosciOsobWBudynku; i++) {
- if (OsobyWBudynku[i].maxCzasWyjscia < *CzasGlobalny) {
- printf("W budynku aktualnie jest uzytkownik o id %d I PRZEBYWA ZA DLUGO! \n",OsobyWBudynku[i].identyfikator);
- }
- else {
- printf("W budynku aktualnie jest uzytkownik o id %d \n", OsobyWBudynku[i].identyfikator);
- }
- }
- ;
- break;
- case 'X': //UWAGA, CAPS LOCK JEST WAŻNY, 'X' to nie to samo co 'x'
- ;
- FILE *fp;
- if ((fp = fopen("wynik.txt", "a")) == NULL) {
- printf("Nie mogę otworzyć pliku test.txt do zapisu!\n");
- exit(1);
- }
- for (int i = 0; i < *WskaznikIlosciOsobWBudynku; i++) {
- fprintf(fp, "W budynku pozostala osoba o id: %d \n", OsobyWBudynku[i].identyfikator);
- }
- fclose(fp);
- exit(0);
- break;
- default:
- break;
- }
- }
- int main()
- {
- int CzasGlobalny = 0;
- int c;
- int RejestrZakazWstepu[Max]; int WskaznikZakazuWstepu = 0;
- struct Osoba OsobyWBudynku[Max]; int WskaznikIlosciOsobWBudynku = 0;
- Menu(&CzasGlobalny, &RejestrZakazWstepu, &WskaznikZakazuWstepu, OsobyWBudynku, &WskaznikIlosciOsobWBudynku);
- while (TRUE) {
- while ((c = getchar()) != '\n' && c != EOF) {}
- Menu(&CzasGlobalny, &RejestrZakazWstepu, &WskaznikZakazuWstepu, OsobyWBudynku, &WskaznikIlosciOsobWBudynku);
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement