Startpunkten
This commit is contained in:
123
Simulering/main.cpp
Normal file
123
Simulering/main.cpp
Normal file
@@ -0,0 +1,123 @@
|
||||
/* *********************************************************************** */
|
||||
/* main.cpp 980910 */
|
||||
/* Innehåller huvudprogram för köhantering */
|
||||
/* *********************************************************************** */
|
||||
/* Daniel Westerberg */
|
||||
/* Christian Ohlsson */
|
||||
/* Anna-Maria Haglund */
|
||||
/* Ingela Johansson */
|
||||
/* Charlotta Lagerkvist */
|
||||
/* *********************************************************************** */
|
||||
#include "lab1.hpp"
|
||||
|
||||
/* *********************************************************************** */
|
||||
/* Klassarray */
|
||||
/* *********************************************************************** */
|
||||
class queue q[K];
|
||||
|
||||
/* *********************************************************************** */
|
||||
/* funktionsprototyper som denna fil innehåller */
|
||||
/* *********************************************************************** */
|
||||
void betala(int);
|
||||
void print(long);
|
||||
void addkund(void);
|
||||
|
||||
/* *********************************************************************** */
|
||||
/* main med huvud-loop och delay */
|
||||
/* *********************************************************************** */
|
||||
void main()
|
||||
{
|
||||
long clock=STARTTID;
|
||||
int kund=0;
|
||||
|
||||
while(!kbhit())
|
||||
{
|
||||
print(clock++);
|
||||
if (++kund == SPM)
|
||||
{
|
||||
addkund();
|
||||
kund=0;
|
||||
}
|
||||
for(int x=0; x<K; x++)
|
||||
betala(x);
|
||||
delay(MS/T);
|
||||
}
|
||||
}
|
||||
|
||||
/* *********************************************************************** */
|
||||
/* print() */
|
||||
/* skriver ut allting på skärmen */
|
||||
/* INPUT: klockan */
|
||||
/* OUTPUT: Tiden på skärmen */
|
||||
/* *********************************************************************** */
|
||||
void print(long cl)
|
||||
{
|
||||
for(int x=0; x<K; x++)
|
||||
{
|
||||
gotoxy(2,x+MOVEX);
|
||||
cout << "Kassa nr " << (x+1) << "; Varor: " << q[x].pay(0) << ' ';
|
||||
gotoxy(23,x+MOVEX);
|
||||
cout << ", Kunder: " << q[x].queueSize() << ' ';
|
||||
}
|
||||
gotoxy(1,1);
|
||||
cout<<"Tid: "<<(cl/(SPM*SPM))<<':'<<((cl/SPM)%SPM)<<':'<<(cl%SPM)<<" ";
|
||||
}
|
||||
|
||||
/* *********************************************************************** */
|
||||
/* betala() */
|
||||
/* beräknar tiden för varorna och tar bort varor och kunder */
|
||||
/* INPUT: position i klassarray */
|
||||
/* OUTPUT: inget */
|
||||
/* *********************************************************************** */
|
||||
void betala(int pos)
|
||||
{
|
||||
if(q[pos].isEmpty()==0)
|
||||
if(q[pos].pay(0))
|
||||
{
|
||||
q[pos].r++;
|
||||
if(q[pos].r==R)
|
||||
if(q[pos].pay(-1)==0)
|
||||
q[pos].r=B;
|
||||
else
|
||||
q[pos].r=0;
|
||||
}
|
||||
else
|
||||
if(q[pos].r>0)
|
||||
q[pos].r--;
|
||||
else
|
||||
q[pos].dequeue();
|
||||
}
|
||||
|
||||
/* *********************************************************************** */
|
||||
/* addkund() */
|
||||
/* lägger till en kund med ett slumpmässigt antal varor i den minsta kön */
|
||||
/* INPUT: inget */
|
||||
/* OUTPUT: inget */
|
||||
/* *********************************************************************** */
|
||||
void addkund()
|
||||
{
|
||||
int in, x, min, pos=0;
|
||||
unsigned int slumptal;
|
||||
srand((unsigned) time(NULL));
|
||||
slumptal = rand()%CENT;
|
||||
if (slumptal < FALL1)
|
||||
in=0;
|
||||
else if (slumptal < FALL2)
|
||||
in=1;
|
||||
else if (slumptal < FALL3)
|
||||
in=2;
|
||||
else
|
||||
in=3;
|
||||
while(in)
|
||||
{
|
||||
min=q[0].warez();
|
||||
for(x=1; x<K; x++)
|
||||
if (min>q[x].warez())
|
||||
{
|
||||
min=q[x].warez();
|
||||
pos=x;
|
||||
}
|
||||
q[pos].enqueue(rand()%MAV+1);
|
||||
in--;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user