Scheduling Algorithms

Write a C Program to Implement FCFS Algorithm.


#include<stdio.h>

#define max(x,y) ((x>y)?x:y)

typedef struct {
 int id,at,bt,wt,ct,tat;
}Process;

int askUser();
void getInput(Process*,int); 
void sortProcess(Process*,int);
void calcValues(Process*,int);
void printValues(Process*,int);

int main(){
  int n = askUser();
  Process Processes[n];
  getInput(Processes,n);
  sortProcess(Processes,n);
  calcValues(Processes,n);
  printValues(Processes,n);
  return 0;
}

int askUser(){
  int n;
  do{
    printf("Enter the number of processes : ");
    scanf("%d",&n);
  }while(n<=0);
    return n;
}

void getInput(Process* p,int size){
  for(int i=0;i p[j+1].at){
        Process temp = p[j];
        p[j] = p[j+1];
        p[j+1] = temp;
      }
}

void calcValues(Process* p,int size){
  p[0].ct = p[0].at + p[0].bt;
  for(int i=1;i<size;i++)
    p[i].ct = max(p[i].at,p[i-1].ct) + p[i].bt;

  for(int i=0;i<size;i++)
    p[i].tat = p[i].ct - p[i].at;

  for(int i=0;i<size;i++)
    p[i].wt = p[i].tat - p[i].bt;
}

void printValues(Process* p,int size){
float avg_tat=0,avg_wt=0;
printf("\n");
printf("+----------+-----+-----+-----+------+-----+\n");
printf("| Process  | AT  | BT  | CT  | TAT  | WT  |\n");
printf("+----------+-----+-----+-----+------+-----+\n");

for (int i = 0; i < size; i++) {
    printf("| P%-8d| %-3d | %-3d | %-3d | %-4d | %-3d |\n",
           p[i].id,
           p[i].at,
           p[i].bt,
           p[i].ct,
           p[i].tat,
           p[i].wt);
}
printf("+----------+-----+-----+-----+------+-----+\n");
  for(int i=0;i<size;i++){
    avg_tat += p[i].tat;
    avg_wt += p[i].wt;
  }
printf("\nAverage Turnaround Time = %.1f\nAverage Waiting Time = %.1f",avg_tat/size,avg_wt/size);
}


Comments

Popular Posts