#include #include #include #define size 3 bool empty(int allocated) { return allocated == 0; } bool full(int allocated) { return allocated == size -1; } void state(int* fifo, int allocated) { if (empty(allocated)) printf("[?] Kolejka pusta\n"); else if (full(allocated)) printf("[?] Kolejka pełna\n"); else printf("[?] Kolejna niepełna i niepusta"); } void show(int* fifo, int allocated) { printf("[?] Wypisywanie:\n"); for (int i = 0; i < allocated; i++) { printf("fifo[%d] =\t%d\n", i, fifo[i]); } } bool push(int* fifo, int* allocated, int el) { if (*allocated + 1 > size) return 0; printf("[+] Dodwanie: %d\n", el); fifo[*allocated] = el; *allocated += 1; return 1; } bool pop(int* fifo, int* allocated) { if (*allocated == 0) return 0; fifo[0] = fifo[1]; for (int i = 0; i < *allocated; i++) { fifo[i] = fifo[i+1]; } *allocated = *allocated-1; return 1; } char menu(); int main() { int fifo[size]; int allocated = 0; do { char opc = menu(allocated); switch (opc) { case 'W': printf ("\n---obsługa wypisania zawartości kolejki---\n"); show(fifo, allocated); break; case 'S': printf ("\n---obsługa wypisania stanu kolejki (pusta/pelna)---\n"); state(fifo, allocated); break; case 'A': int el; printf ("\n---obsluga dolozenia elementu do kolejki---\n"); printf("Podaj element: "); scanf("%d", &el); if(!push(fifo, &allocated, el)) printf("[!] Brak miejsca w kolejce!"); break; case 'Z': printf("\n---obsługa zebrania elementu z kolejki---\n"); if(!pop(fifo, &allocated)) printf("[!] Kolejka jest pusta"); break; case 'K': printf ("[?] Koniec\n"); return 0; break; } } while (getchar(), getchar()); return 0; } char menu (int allocated) { char opcja = 'X'; while ((opcja != 'W') && (opcja != 'S') && (opcja != 'A') && (opcja != 'Z') && (opcja != 'K')) { system("@cls||clear"); printf ("Wybierz opcje (%d/%d):\n", allocated, size); printf ("W - Wypisanie zawartosci kolejki\n"); printf ("S - Wypisanie stanu kolejki (pusta/pelna)\n"); printf ("A - Dolozenie elementu do kolejki\n"); printf ("Z - Zebranie elementu z kolejki\n"); printf ("K - Koniec \n"); printf ("Podaj opcję: "); scanf ("%c", &opcja); } return opcja; }