-
Notifications
You must be signed in to change notification settings - Fork 1
/
FCFS Algo.c
127 lines (121 loc) · 2.02 KB
/
FCFS Algo.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include<stdio.h>
#include<stdlib.h>
#include <unistd.h>
#include <sys/time.h>
struct Info
{
int PID;
int Burst;
int TAT;
int WT;
};
void Gantt_Chart(struct Info P[], int n)
{
int i, j;
//Print Upper
printf("+");
for(i=0; i<n; i++)
{
for(j=0; j<P[i].Burst; j++)
{
printf("++");
}
printf("+");
}
printf("\n|");
//Printing PID
for(i=0; i<n; i++)
{
for(j=0; j<P[i].Burst - 1; j++)
{
printf(" ");
}
printf("P%d", P[i].PID);
for(j=0; j<P[i].Burst - 1; j++)
{
printf(" ");
}
printf("|");
}
printf("\n");
//Print Bottom
for(i=0; i<n; i++)
{
for(j=0; j<P[i].Burst; j++)
{
printf("++");
}
printf("+");
}
printf("+");
printf("\n");
//Print TAT
printf("0");
for(i=0; i<n; i++)
{
for(j=0; j<P[i].Burst; j++)
{
printf(" ");
}
//Removing Backspace
if(P[i].TAT > 9)
printf("\b");
printf("%d", P[i].TAT);
}
printf("\n");
}
int main()
{
float AWT=0;
float ATAT=0;
printf("ENTER THE TOTAL PROCESS : ");
int N;
scanf("%d" , &N);
struct Info *PR=malloc(sizeof(struct Info) *N);
printf("\n");
//Get Burst Time
for(int i=0 ; i<N ; i++)
{
printf("BURST TIME FOR %d : " , i+1);
scanf("%d" , &PR[i].Burst);
}
//Assign PID
for(int j=0 ; j<N ; j++)
{
PR[j].PID=j;
}
PR[0].WT=0;
//Calc WT
for(int i=0 ; i<N ; i++)
{
PR[i+1].WT=PR[i].WT+PR[i].Burst;
}
//Calc TAT
for(int i=0 ; i<N ; i++)
{
PR[i].TAT=PR[i].WT+PR[i].Burst;
}
int x=0;
//Finding Averages
for(int i=0 ; i<N ; i++)
{
AWT+=PR[i].WT;
ATAT+=PR[i].TAT;
}
AWT/=N;
ATAT/=N;
printf("\n");
printf("PROCESS \tBURST TIME \tWAITING TIME \n");
for(int i=0 ; i<N ; i++)
{
printf("%d\t %d\t %d\t " , PR[i].PID , PR[i].Burst , PR[i].WT);
printf("\n");
}
printf("\n");
printf("AVERAGE TAT TIME : %f " , ATAT);
printf("\n");
printf("AVERAGE WATING TIME : %f " , AWT);
printf("\n");
printf("\n");
Gantt_Chart(PR , N);
}