Alright guys, thanks to everyone out there who has helped me with this project. Much props to ya'll... here is my final attempt at this, hopefully you'll be able to tell what I'm trying to accomplish in the code by reading through it. This is the last time i'll post, so please please please someone take the time to read through it and make some suggestions for me!!! THanks everyone!!
Code:
/*
Program copies processes into the ready list at correct times and runs in
proper time and obtains all data required. (May not be correct though?? :) )
Problem in code is putting process from "readyList" into "simulated CPU" at correct expirations of
time quanta.
CPU should be "simulated" the same as the (x < 800000) simulates 800 seconds of CPU processing.
*/
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
long int preList[22][2];
long int readyList[22][2];
int timeQuanta[4] = {50, 100, 250, 500};
int overheadArray[6] = {0, 5, 10, 15, 20, 25};
int main()
{
fstream inFile;
inFile.open("times.txt", ios::in);
int arrivalTime;
float timeToProcess;
int i, z= 0;
int h = 1;
long int x = 0;
int p, temp;
int newTime = 0;
int wait;
int quantumEntered, overheadEntered, timeArrived;
int averageWaitTime, averageTurnAroundTime = 0;
bool done = false;
cout<<"Please enter time quantum number 1 - 4"<<endl;
cin>>quantumEntered;
int quantum = timeQuanta[quantumEntered-1];
cout<<"Please enter overhead numer 1 - 6"<<endl;
cin>>overheadEntered;
int overhead = overheadArray[overheadEntered-1];
quantum = quantum + overhead;
//make sure file opens
if (!inFile)
{
cout<<"Error opening file."<<endl;
exit(1);
}
//open file, get stuff in there
while(!inFile.eof())
{
for(i=0; i<22; i++)
{
//read from file into variables
inFile>>arrivalTime>>timeToProcess;
//put data into proper "preList" array
preList[i][0] = arrivalTime * 1000;
preList[i][1] = timeToProcess;
//save current time in timeArrived
timeArrived = timeArrived + x;
}
}
cout<<endl<<endl;
while (x < 800000)
{
//set x%1000 into p
p = x%1000;
//if p == 0, it means x is at a number ending in 3 zeros..., so go check preList to see if process is ready to come in or not
if (p == 0)
{
//if 'arrivalTime' field in preList is equal to the current time in 'x', copy over into "readyList"
if (preList[z][0] == x)
{
//copy into readyList at arrival time
cout<<"Arrival time is: "<<x<<" m.s. for process #: "<<h<<endl;
readyList[z][0] = preList[z][0];
readyList[z][1] = preList[z][1];
h++;
cout<<"Time in CPU is: "<<readyList[z][1]<<" m.s."<<endl;
//add processing time to arrival time to obtain and see new time
newTime = x + readyList[z][1];
cout<<"Time after run is: "<<newTime<<endl;
cout<<endl;
z++;
}
}
while (readyList[z] != 0 && quantum!=0)
{
newTime = newTime + 1;
if(quantum == 0)
{
//reset quantum to alloted quantum chosen
quantum = timeQuanta[quantumEntered-1] + overhead;
cout<<"Quanta reset"<<endl;
}
wait = x + timeArrived;
quantum--;
}
//cout<<"quantum is: "<<quantum<<endl;
//increment counter +1
x++;
}
averageWaitTime = (timeArrived + wait)/22;
cout<<"average wait time: "<<averageWaitTime<<endl;
temp = newTime - timeArrived;
averageTurnAroundTime = temp/22;
cout<<"average turnaround time: "<<averageTurnAroundTime<<endl;
return 0;
}