Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <windows.h>
- #include <time.h>
- #include <conio.h>
- #define M 1 // frizieru kresls
- #define N 3 // kresli klientiem
- #define BUSY_TIME 5 // 5 intervali katram klientam
- #define SPAWN_CHANCE 5 // iespeja, kaa ienaaks jauns klients
- // iespejami statusi
- enum tstate { ST_NOTHING, ST_WAITING, ST_ACTIVE };
- // klients
- typedef struct {
- tstate state;
- } tclient;
- // frizieris
- typedef struct {
- tstate state;
- int busytim;
- } thairdresser;
- int main()
- {
- tclient clients[N];
- thairdresser hairdresser;
- srand(time(0));
- int i, k, occupied = 0;
- // visiem klientiem pieskiram statusu ST_NOTHING
- for (i = 0; i <= N - 1; i++) {
- clients[i].state = ST_NOTHING;
- }
- hairdresser.state = ST_NOTHING;
- printf("Uzspiediet jebkuru pogu, lai izietunn");
- while (!kbhit()) {
- // Ja frizieris tiko pabeidz darbu///
- if (hairdresser.state == ST_WAITING) {
- if (occupied > 0) { //vismaz viens klients gaida
- clients[0].state = ST_ACTIVE; // frizieris pienem primo klientu
- hairdresser.state = ST_ACTIVE; // frizieris aiznemts
- hairdresser.busytim = BUSY_TIME; // timer
- } else {
- hairdresser.state = ST_NOTHING; // ja neviena nav aizet gulet
- }
- }
- // parbaudam, vai frizieris stradaaja
- if (hairdresser.busytim > 0) { // parbaudam, vai frizieris pabeidza darbu
- hairdresser.busytim -= 1;
- if (hairdresser.busytim == 0) { // pabeidza darbu
- for (int i = 0; i < N - 1; i++) { // apmierinats klients aiziet, masiva nobide
- clients[i] = clients[i + 1];
- }
- clients[N - 1].state = ST_NOTHING;
- occupied -= 1; // atbrivojam vietu
- printf("Klients apkalpots, frizieris aizies uz istabu Wn");
- hairdresser.state = ST_WAITING; // frizieris aizies uz istabu W
- }
- }
- // Atnaak klients (vai neatnaak)
- k = rand() % SPAWN_CHANCE;
- if (k == SPAWN_CHANCE - 1) {
- if (occupied < N) { // Ir brivas vietas;
- occupied += 1;
- printf("Atnak klients uz %i. vietun", occupied);
- if (hairdresser.state == ST_NOTHING) { // Ja frizieris gul tad celam vinu
- hairdresser.state = ST_ACTIVE;
- hairdresser.busytim = BUSY_TIME;
- clients[occupied - 1].state = ST_ACTIVE;
- } else {
- clients[occupied - 1].state = ST_WAITING;
- }
- } else
- printf("Klients atnaak, bet nav vietun");
- } else
- printf("Neviens nenaak...n");
- // Izvadam informaciju par klienta stavokli
- for (i = 0; i <= N - 1; i++) {
- if (clients[i].state == ST_NOTHING) {
- printf("%d: tukss | ", i);
- } else if (clients[i].state == ST_WAITING) {
- printf("%d: gaida | ", i);
- } else if (clients[i].state == ST_ACTIVE) {
- printf("%d: cirpt matus | ", i + 1);
- }
- }
- printf("n");
- // Izvadam informaciju par friziera stavokli
- if (hairdresser.state == ST_NOTHING) {
- printf("Frizieris: guln");
- } else if (hairdresser.state == ST_WAITING) {
- printf("Frizieris: aizej uz Wn");
- } else if (hairdresser.state == ST_ACTIVE) {
- printf("Frizieris: strada (%i)n", hairdresser.busytim);
- }
- printf("---------------------------------------------");
- Sleep(1000);
- }
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement