-
Notifications
You must be signed in to change notification settings - Fork 0
/
os_code.c
131 lines (109 loc) · 2.99 KB
/
os_code.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
128
129
130
131
#include <stdio.h>
struct student
{
int Stdnt_Id;
int Fd_Tkn_Tm;
int Wait_Tm;
int Trn_Arnd_Tm;
};
void scheduling(struct student lst[], int s);
void turnAroundTime(struct student lst[], int n);
void acpt(struct student lst[], int s);
void waitingTime(struct student lst[], int n);
void display(struct student lst[], int s);
int main()
{
struct student data[20];
int n,i;
char c='n';
do
{
printf("Enter the No. of Students need to eat in mess? : ");
scanf("%d", &n);
acpt(data, n);
scheduling(data, n);
waitingTime(data,n);
turnAroundTime(data,n);
display(data, n);
printf("Want to continue? press 'y' : ");
scanf("%s",&c);
}while(c=='y');
return 0;
}
//Display function
void display(struct student lst[80], int s)
{
int i,AvgWaitingTime=0,AvgTurnAroundTime=0;
int TotalWatingTime=0,TotalTurnAroundTime=0;
printf("\n\n\t\t\tOutput according to LRTF\n");
printf("\n|Student id\tFoodTakenTime\tWaitingTime\tTurnAroundTime |");
for (i = 0; i < s; i++)
{
printf("\n|%d\t\t%d\t\t%d\t\t%d\t\t|", lst[i].Stdnt_Id, lst[i].Fd_Tkn_Tm,lst[i].Wait_Tm,lst[i].Trn_Arnd_Tm);
TotalWatingTime= TotalWatingTime+lst[i].Wait_Tm;
TotalTurnAroundTime= TotalTurnAroundTime+lst[i].Trn_Arnd_Tm;
}
printf("\n\t\t\tTotal Turn around Time is: = %d\n\n",TotalTurnAroundTime);
printf("\n\n\t\t\tTotal Waiting Time is: = %d",TotalWatingTime);
printf("\n\t\t\tAverage Turn around Time is: = %d\n\n",TotalTurnAroundTime/s);
printf("\n\n\t\t\tAverage Waiting Time is: = %d",TotalWatingTime/s);
}
// Scheduling function
void scheduling(struct student lst[80], int s)
{
int i, j;
struct student temp;
for (i = 0; i < s - 1; i++)
{
for (j = 0; j < (s - 1-i); j++)
{
if (lst[j].Fd_Tkn_Tm < lst[j + 1].Fd_Tkn_Tm)
{
temp = lst[j];
lst[j] = lst[j + 1];
lst[j + 1] = temp;
}
else if(lst[j].Fd_Tkn_Tm == lst[j + 1].Fd_Tkn_Tm)
{
if(lst[j].Stdnt_Id > lst[j + 1].Stdnt_Id)
{
temp = lst[j];
lst[j] = lst[j + 1];
lst[j + 1] = temp;
}
}
}
}
}
// Accept function
void acpt(struct student lst[80], int s)
{
int i;
for (i = 0; i < s; i++)
{
printf("\n\nEnter data for Student #%d", i + 1);
printf("\nEnter Student id : ");
scanf("%d", &lst[i].Stdnt_Id);
printf("Enter time taken for food (minuts): ");
scanf("%d", &lst[i].Fd_Tkn_Tm);
}
}
//WAting time function
void waitingTime(struct student lst[80], int n)
{
int j,total;
lst[0].Wait_Tm=0;
for(j=1;j<n;j++)
{
lst[j].Wait_Tm=lst[j-1].Wait_Tm+lst[j-1].Fd_Tkn_Tm;
}
}
//Turnaround time function
void turnAroundTime(struct student lst[80], int n)
{
int j,total;
for(j=0;j<n;j++)
{
lst[j].Trn_Arnd_Tm=lst[j].Wait_Tm+lst[j].Fd_Tkn_Tm;
}
}