Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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();

       }

      

}