Write a program that will simulate nonpreemptive process sch
Solution
#include <stdio.h>
 int waiting_time[10],burst_time[10],priority[10],arrival_time[10],tat[10],n;
  float awt,atat;
 void input()
    {
 printf(\"Enter Number of processes:\");
 scanf(\"%d\",&n);
 int i;
 for(i=0;i<n;i++)
        {
 printf(\"\ Please Enter Burst Time of process %d:\",i+1);
 scanf(\"%d\",&burst_time[i]);   
 printf(\"Please Enter Arrival Time of process %d:\",i+1);
 scanf(\"%d\",&arrival_time[i]);
        printf(\"Please Enter priority of the process %d:\",i+1);
 scanf(\"%d\",&priority[i]);        
 }
    }
void priority_scheduling()
    {
    int x,p[10],w[10],t[10],awt,atat,i,j;
 printf(\"\ Shortest Job First Scheduling\");
    for(i=0;i<n-1;i++)
        {
        for(j=i+1;j<n;j++) //sorting by priority of process
            {
            if(priority[i]<priority[j]) //if process i has lower priority than process j
                {
                x=priority[i];
                priority[i]=priority[j];
                priority[j]=x;
                x=burst_time[i];
                burst_time[i]=burst_time[j];
                burst_time[j]=x;
                x=p[i];
                p[i]=p[j];
                p[j]=x;
                }
            }
        }
    w[0]=0;
    awt=0;
    t[0]=burst_time[0];
    atat=t[0];
    for(i=1;i<n;i++) calculating wait time, turn around time
        {
        w[i]=t[i-1];
        awt+=w[i];
        t[i]=w[i]+burst_time[i];
        atat+=t[i];
        }
    printf(\"\ \  Job \\t Burst Time \\t Wait Time \\t Turn Around Time Priority \ \");
    for(i=0;i<n;i++)
        printf(\"\  %d \\t\\t %d \\t\\t %d \\t\\t %d \\t\\t %d \ \",p[i],burst_time[i],w[i],t[i],priority[i]);
    awt/=n;
    atat/=n;
    printf(\"\  Average Wait Time : %d \ \",awt);
    printf(\"\  Average Turn Around Time : %d \ \",atat);
    }  
void SJF()
    {
    int i,p[10]={1,2,3,4,5,6,7,8,9,10},min,k=1,btime=0;
    int temp,j,wt[10],tt[10],ta=0,sum=0;
    float wavg=0,tavg=0,tsum=0,wsum=0;
    printf(\"\ Shortest Job First Scheduling\");
    /*Sorting According to Arrival Time*/
    for(i=0;i<n;i++)
        {
        for(j=0;j<n;j++)
            {
            if(arrival_time[i]<arrival_time[j]) //sorting processes by arrival time
                {
                temp=p[j];
                p[j]=p[i];
                p[i]=temp;
                temp=arrival_time[j];
                arrival_time[j]=arrival_time[i];
                arrival_time[i]=temp;
                temp=burst_time[j];
                burst_time[j]=burst_time[i];
                burst_time[i]=temp;
                }
            }
        }
   for(j=0;j<n;j++)
        {
        btime=btime+burst_time[j];
        min=burst_time[k];
        for(i=k;i<n;i++)
            {
            if (btime>=arrival_time[i] && burst_time[i]<min)
                {
                temp=p[k];
                p[k]=p[i];
                p[i]=temp;
                temp=arrival_time[k];
                arrival_time[k]=arrival_time[i];
                arrival_time[i]=temp;
                temp=burst_time[k];
                burst_time[k]=burst_time[i];
                burst_time[i]=temp;
                }
            }
        k++;
        }
    wt[0]=0;
    for(i=1;i<n;i++)
        {
        sum=sum+burst_time[i-1];
        wt[i]=sum-arrival_time[i];
        wsum=wsum+wt[i];
        }
      
    wavg=(wsum/n);
    for(i=0;i<n;i++)
        {
        ta=ta+burst_time[i];
        tt[i]=ta-arrival_time[i];
        tsum=tsum+tt[i];
        }
      
    tavg=(tsum/n);
      
    printf(\"************************\");
    printf(\"\  RESULT:-\");
    printf(\"\ Process\\t Burst\\t Arrival\\t Waiting\\t Turn-around\" );
    for(i=0;i<n;i++)
        {
        printf(\"\  p%d\\t %d\\t %d\\t\\t %d\\t\\t\\t%d\",p[i],burst_time[i],arrival_time[i],wt[i],tt[i]);
        }
    printf(\"\ \ AVERAGE WAITING TIME : %f\",wavg);
    printf(\"\ AVERAGE TURN AROUND TIME : %f\",tavg);
    }
 
 void FCFS()
    {
 waiting_time[0]=0;
 atat=tat[0]=burst_time[0];
 int btt=burst_time[0];//to store total burst time sum
 int i;
 for(i=1;i<n;i++){
 waiting_time[i]=btt-arrival_time[i];
 btt+=burst_time[i];
 awt+=waiting_time[i];   
 tat[i]= waiting_time[i]+burst_time[i];   
 atat+=tat[i];
 }
 atat/=n;
 awt/=n;
 printf(\"SR.\\tA.T.\\tB.T.\\tW.T.\\tT.A.T.\ \");
 for(i=0;i<n;i++)
 {
 printf(\"%3d\\t%3d\\t%3d\\t%3d\\t%4d\ \",i+1,arrival_time[i],burst_time[i],waiting_time[i],tat[i]);
  }
 printf(\"Average Waiting Time: %f\ Average Turn Around Time:%f\",awt,atat);
    }
   
 int main()
    {
 printf(\"\ FCFS CPU Scheduling Algorithm\ \");
 input();
 FCFS();
    SJF();
    priority_scheduling();
    }



