Need help translating a C program in Java. It a C program for round robin algori
ID: 3750579 • Letter: N
Question
Need help translating a C program in Java. It a C program for round robin algorithm in operating system.
While you translating, could you please randomly generate arrival time and burst time between 0 and 100 ?
Thanks
C program:
#include<stdio.h>
int main()
{
int i,j,n,time,remain,flag=0,ts;
int sum_wait=0,sum_turnaround=0,at[10],bt[10],rt[10];
printf("Enter no of Processes : ");
scanf("%d",&n);
remain=n;
for(i=0;i<n;i++)
{
printf("Enter arrival time and burst time for Process P%d :",i+1);
scanf("%d",&at[i]);
scanf("%d",&bt[i]);
rt[i]=bt[i];
}
printf("Enter time slice");
scanf("%d",&ts);
printf(" Process |Turnaround time|waiting time ");
for(time=0,i=0;remain!=0;)
{
if(rt[i]<=ts && rt[i]>0)
{
time+=rt[i];
rt[i]=0;
flag=1;
}
else if(rt[i]>0)
{
rt[i]-=ts;
time+=ts;
}
if(rt[i]==0 && flag==1)
{
remain--;
printf("P[%d] | %d | %d ",i+1,time-at[i],time-at[i]-bt[i]);
sum_wait+=time-at[i]-bt[i];
sum_turnaround+=time-at[i];
flag=0;
}
if(i==n-1)
i=0;
else if(at[i+1]<=time)
i++;
else
i=0;
}
printf(" Avg sum_wait = %f ",sum_wait*1.0/n);
printf("Avg sum_turnaround = %f",sum_turnaround*1.0/n);
return 0;
}
Explanation / Answer
// Java code corresponding to the above C code for round robin algorithm
import java.util.Random;
import java.util.Scanner;
public class RoundRobin {
public static void main(String[] args) {
int i,n,time,remain,ts;
int sum_wait=0,sum_turnaround=0,at[],bt[],rt[];
boolean flag = false;
Scanner scan = new Scanner(System.in);
System.out.print(" Enter no. of processes : ");
n = scan.nextInt();
at =new int[n];
bt = new int[n];
rt = new int[n];
remain = n;
Random ran = new Random();
// generate arrival and burst time randomly between 0-100
for(i=0;i<n;i++)
{
at[i] = ran.nextInt(100);
bt[i] = ran.nextInt(100);
rt[i] = bt[i];
}
System.out.print(" Enter time slice :");
ts = scan.nextInt();
System.out.print(" Process |Turnaround time|waiting time ");
for(time=0,i=0;remain!=0;)
{
if(rt[i]<=ts && rt[i]>0)
{
time+=rt[i];
rt[i]=0;
flag=true;
}else if(rt[i]>0)
{
rt[i] -= ts;
time += ts;
}
if(rt[i]==0 && flag==true)
{
remain--;
System.out.printf("P[%d] | %d | %d ",(i+1),time-at[i],time-at[i]-bt[i]);
sum_wait += time-at[i]-bt[i];
sum_turnaround+=time-at[i];
flag=false;
}
if(i==n-1)
i=0;
else if(at[i+1]<=time)
i++;
else
i=0;
}
System.out.printf(" Avg sum_wait = %f ",(float)sum_wait/n);
System.out.printf("Avg sum_turnaround = %f ",(float)sum_turnaround/n);
scan.close();
}
}