I have this code so far for processing a a priority queue. I have a set interval
ID: 3533330 • Letter: I
Question
I have this code so far for processing a a priority queue. I have a set interval time when items get queued from an input file . Then each item has a time to start or go into processing and how long to be in processing.
Node1: 6 5 add to queue at counter 0
Node2: 7 4 add to queue counter 4
Node3: 18 6 add to queue counter 8
Node4: 23 3 add to queue counter 12
Node5: 27 5 add to queue counter 16
Node 1 gets queued at counter 0, once counter is at 6 it moves into processing, at this point it stays in processing for 5 counts. At the same time when counter has reached 4 node 2 gets queued.
The goal is to add nodes to queues, move from queue to processing and if something is in the process check if it is finished.
#include <iostream>
?
#include <fstream>
using namespace std;
?
const int maxqueue = 8;
struct queuetype
{
int start[maxqueue];
int process [maxqueue];
int front;
int back;
};
void createqueue(queuetype &queue);
bool fullqueue(queuetype queue);
bool emptyqueue(queuetype queue);
void enqueue(queuetype &queue, int &starting , int &processing);
void dequeue(queuetype &queue, int &starting , int &processing);
int main()
{
ifstream inputfile;
inputfile.open("nums.txt");
if (!inputfile)
{
cout<<"The input file could not be opened"<<endl;
system ("PAUSE");
return 1;
}
queuetype standard;
int starting, processing;
char quest;
createqueue(standard);
int machine;
int counter=0;
while (counter!=500)
{
?
if (counter==0)
{
inputfile>>starting;
inputfile>>processing;
enqueue(standard, starting, processing);
}
if (counter==starting)
{
machine=processing;
}
if (counter==5)
{
inputfile>>starting;
inputfile>>processing;
enqueue(standard, starting, processing);
}
while(!(emptyqueue(standard)))
{
dequeue(standard, starting, processing);
cout << "START :"<< starting<< " "<<"Processing :"<<processing<<endl;
}
?
cin.get();
cin.ignore();
//system("pause");
}
void createqueue(queuetype &queue)
{
queue.front = maxqueue - 1;
queue.back = maxqueue - 1;
}
bool fullqueue(queuetype queue)
{
if(queue.front == (queue.back +1) % maxqueue ) return 1;
else return 0;
}
void enqueue(queuetype &queue, int &starting , int &processing)
{
queue.back = (queue.back + 1) % maxqueue;
queue.start[queue.back] = starting;
queue.process[queue.back] = processing;
}
bool emptyqueue(queuetype queue)
{
if(queue.front == queue.back) return 1;
else return 0;
}
void dequeue(queuetype &queue, int &starting , int &processing)
{
queue.front = (queue.front +1) % maxqueue;
starting = queue.start[queue.front];
processing = queue.process[queue.front];
}
Explanation / Answer
the code is right it work's