Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <stdio.h>
- void gotoxy(int x, int y)
- {
- COORD c;
- c.X = x - 1;
- c.Y = y - 1;
- SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
- }
- int pisanie;
- #pragma argsused
- struct dane_dla_watku
- {
- int i;
- int samochodek;
- }myjnia = { 0, 0 };
- struct dane
- {
- struct dane_dla_watku* myjnia;
- int numer;
- };
- DWORD WINAPI funkcja_auta(void* argumenty);
- DWORD WINAPI funkcja_myjni(void* argumenty);
- struct dane tmp[10];
- int main(int argc, char **argv)
- {
- int i,ilosc;
- DWORD id;
- HANDLE watek;
- printf("Ile samochodow chcesz wypuscic na ulice?\n");
- scanf("%d",&ilosc);
- CreateThread(
- NULL,
- 0,
- funkcja_myjni,
- (void*)&myjnia,
- 0,
- &id);
- for(i = 0; i<ilosc; i++)
- {
- tmp[i].myjnia = &myjnia;
- tmp[i].numer = i+1;
- watek = CreateThread(
- NULL,
- 0,
- funkcja_auta,
- (void*)&tmp[i],
- 0,
- &id);
- }
- //CreateProcess((LPCSTR)"C:\\Windows\\System32\\notepad.exe",NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
- Sleep(100000);
- return 0;
- }
- DWORD WINAPI funkcja_auta(void* argumenty)
- {
- struct dane* moje = (struct dane*)argumenty;
- while(pisanie);
- pisanie = 1;
- gotoxy(0,moje->numer+2);
- printf("Auto %d: Wyjezdzam na miasto!\n", moje->numer);
- pisanie = 0;
- while(1)
- {
- Sleep((rand()%3000)+2000+moje->numer*100);
- if(rand()%2 == 0)
- {
- if(moje->myjnia->i == 0)
- {
- moje->myjnia->i = 1;
- moje->myjnia->samochodek = moje->numer;
- while(pisanie);
- pisanie = 1;
- gotoxy(0,moje->numer+2);
- printf("Auto %d: Wjezdzam do myjni\n", moje->numer);
- pisanie = 0;
- Sleep(((rand()%4)+2)*1000);
- moje->myjnia->i = 0;
- while(pisanie);
- pisanie = 1;
- gotoxy(0,moje->numer+2);
- printf("Auto %d: Wjechalem z myjni\n", moje->numer);
- pisanie = 0;
- }
- else
- {
- while(pisanie);
- pisanie = 1;
- gotoxy(0,moje->numer+2);
- printf("Auto %d: Chcialem jechac do myjni ale jest zajeta\n", moje->numer);
- pisanie = 0;
- }
- }
- else
- {
- while(pisanie);
- pisanie = 1;
- gotoxy(0,moje->numer+2);
- printf("Auto %d: Jezdze po miescie\n", moje->numer);
- pisanie = 0;
- }
- }
- return 0;
- }
- DWORD WINAPI funkcja_myjni(void* argumenty)
- {
- int byloauto = 0;
- struct dane_dla_watku* dane = (struct dane_dla_watku*)argumenty;
- while(pisanie);
- pisanie = 1;
- gotoxy(0,0);
- printf("Otworzylismy myjnie w miescie!\n");
- pisanie = 0;
- while(1)
- {
- if(dane->i == 1)
- {
- while(pisanie);
- pisanie = 1;
- gotoxy(0,0);
- printf("Myjnia: W myjni jest samochod samochod: %d\n", dane->samochodek);
- pisanie = 0;
- byloauto = 1;
- }
- if(dane->i == 0)
- {
- while(pisanie);
- pisanie = 1;
- gotoxy(0,0);
- printf("Myjnia: Wolne miejsce w myjni\n");
- pisanie = 0;
- byloauto = 0;
- }
- Sleep(1000);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement