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