Help with Round robin code in c++

• July 26th, 2014, 07:32 PM
Raaj1
Help with Round robin code in c++
After lots of research online and studying various source codes. I thought of trying myself to come up with a way to write the round robin code.
I tried but i get errors in certain part of my output. I am unable to generate the Gaint chart and also please can anyone explain me where i made mistake in calculating my waiting time algorithm.

Can anyone explain me specially how can i get the waiting time of each process and kindly correct my algorithm .Please i have a sincere request. I am a self learner and there is basically no one other than online articles or books to help me understand a code. So, if you correct my mistake, please can you explain me along with the correction. I really want to get the concept because i don't want to do the same mistake again. Thanks.

------- Here is my code --------------

#include<iostream>

using namespace std;

int main()
{
int k,j,q,i,n,ts,temp;
int aw; float awt;
int bt[10],wt[10],te[10],rt[10],at[10];j=0; //te array stores the number of times a process comes to CPU before completion

//bt is my burst time store array
//wt is my waiting time array
//te keeps a count of the number of times a process enters the CPU before completion
//at is the arrival time

cout<<"Enter number of processes"<<endl;
cin>>n;

for(i=0;i<n;i++)
{

cout<<"Enter burst time"<<endl;

cin>>bt[i];

cout<<"Enter arrival times"<<endl;
cin>>at[i];

te[i] = 0; wt[i] = 0;
}

for(i=0;i<n;i++)
{
for(j = i+1;j<n;j++)
{
if(at[j]<at[i])
{
temp = at[i];
at[i] = at[j];
at[j] = temp;
if(at[j] ==at[i])
temp = bt[i];
bt[i] = bt[j];
bt[j] = temp;
}
}
}

cout<<"Enter time slice"<<endl;
cin>>ts;

cout<<"process:"<<endl;

for(i=0;i<n;i++)
{
cout<<"\t"<<i+1<<endl;
}

cout<<"Burst time:"<<endl;
for(i=0;i<n;i++)
{
cout<<" "<<bt[i]<<endl;
rt[i] = bt[i];
}

cout<<"arrival time:"<<endl;
for(i=0;i<n;i++)
{
cout<<" "<<at[i]<<endl;
}

cout<<"Gaint chart"<<endl;

while (j<=n)
{

j++;

for(i = 0;i<n;i++)
{
if(rt[i] ==0) continue;
if(rt[i]>=ts)
{
cout<<"\t"<<q<<i+1<<endl;
q = q + ts;
rt[i] = rt[i] - ts;
te[i] = te[i] + 1;
}

else
{
cout<<" "<<q<<i+1<<endl;
wt[i] = q-te[i]*ts;
q = q +rt[i];
rt[i] = rt[i] - rt[i];
}
}
}

awt = 0;

cout<<"Process Waiting Time"<<endl;
for(i =0;i<n;i++)
{
wt[i] = wt[i] - at[i];
cout<<" "<<i+1<<endl;
cout<<wt[i]<<endl;
awt = awt + wt[i];
}
aw = awt;
cout<<"Total waiting time"<<aw<<endl;
cout<<"Average waiting time "<<awt/n<<endl;

return 0;

}
• July 27th, 2014, 03:21 AM
VictorN
Re: Help with Round robin code in c++
1. the question has nothing to do with the Visual C++, so it is now moved to the more appropriate forum.
2. Your code is absolutely unreadable. Please, use Code tags around code snippets. See Announcement: Before you post....
• July 27th, 2014, 04:10 AM
2kaud
Re: Help with Round robin code in c++
I've formatted the code to make it more readable

Code:

```#include <iostream> using namespace std; int main() { int        k,         j,         q,         i,         n,         ts,         temp; int        aw; float awt; int    bt[10],         wt[10],         te[10],                //te array stores the number of times a process comes to CPU before completion         rt[10],         at[10];         j = 0; //bt is my burst time store array //wt is my waiting time array //te keeps a count of the number of times a process enters the CPU before completion //at is the arrival time         cout << "Enter number of processes" << endl;         cin >> n;         for (i = 0; i < n; i++)         {                 cout << "Enter burst time" << endl;                 cin >> bt[i];                 cout << "Enter arrival times" << endl;                 cin >> at[i];                 te[i] = 0;                 wt[i] = 0;         }         for (i = 0; i < n; i++)         {                 for (j = i + 1; j < n; j++)                 {                         if (at[j] < at[i])                         {                                 temp = at[i];                                 at[i] = at[j];                                 at[j] = temp;                                 if (at[j] == at[i])                                         temp = bt[i];                                 bt[i] = bt[j];                                 bt[j] = temp;                         }                 }         }         cout << "Enter time slice" << endl;         cin >> ts;         cout << "process:" << endl;         for (i = 0; i < n; i++)         {                 cout << "\t" << i + 1 << endl;         }         cout << "Burst time:" << endl;         for (i = 0; i < n; i++)         {                 cout << " " << bt[i] << endl;                 rt[i] = bt[i];         }         cout << "arrival time:" << endl;         for (i = 0; i < n; i++)         {                 cout << " " << at[i] << endl;         }         cout << "Gaint chart" << endl;         while (j <= n)         {                 j++;                 for (i = 0; i < n; i++)                 {                         if (rt[i] == 0)                                 continue;                         if (rt[i] >= ts)                         {                                 cout << "\t" << q << i + 1 << endl;                                 q = q + ts;                                 rt[i] -= ts;                                 te[i]++;                         }                         else                         {                                 cout << " " << q << i + 1 << endl;                                 wt[i] = q - te[i] * ts;                                 q += rt[i];                                 rt[i] = rt[i] - rt[i];        //ARE YOU SURE?????                         }                 }         }         awt = 0;         cout << "Process Waiting Time" << endl;         for (i = 0; i < n; i++)         {                 wt[i] -= at[i];                 cout << " " << i + 1 << endl;                 cout << wt[i] << endl;                 awt += wt[i];         }         aw = awt;         cout << "Total waiting time" << aw << endl;         cout << "Average waiting time " << awt / n << endl;         return 0; }```
Are you sure you want this line
Code:

`rt[i] = rt[i] - rt[i];        //ARE YOU SURE?????`
What debugging of this code have you done to determine where it starts to deviate rom what you expected?