Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- typedef struct job{
- int id;
- int at;
- int bt;
- int st;
- int ct;
- int wt;
- int tat;
- } job;
- void sortJobs(job jobs[], int n){
- int i, j;
- job t;
- for(i = 0; i < n-1; i++){
- for(j = i+1; j < n; j++){
- if (jobs[i].at > jobs[j].at){
- t = jobs[i];
- jobs[i] = jobs[j];
- jobs[j] = t;
- }
- }
- }
- }
- void sortJobsID(job jobs[], int n){
- int i, j;
- job t;
- for(i = 0; i < n-1; i++){
- for(j = i+1; j < n; j++){
- if (jobs[i].id > jobs[j].id){
- t = jobs[i];
- jobs[i] = jobs[j];
- jobs[j] = t;
- }
- }
- }
- }
- int solve(){
- int k;
- printf("\n\tFCFS Scheduling Algorithm\n");
- printf("\n1. Same Arrival time (0)");
- printf("\n2. Different Arrival Times\n>>");
- scanf("%d", &k);
- if (!(k == 1) && !(k == 2)){
- printf("\nINVALID");
- exit(0);
- }
- int n;
- printf("Enter number of processes: ");
- scanf("%d", &n);
- job *jobs;
- jobs = (job*)malloc(sizeof(job)*n);
- int i;
- for(i=0; i < n; i++){
- jobs[i].id = i;
- if (k != 1){
- printf("Enter Arrival Time of Process %d: ", i);
- scanf("%d", &jobs[i].at);
- }
- else{
- jobs[i].at = 0;
- }
- printf("Enter Burst Time of Process %d: ", i);
- scanf("%d", &jobs[i].bt);
- }
- sortJobs(jobs, n);
- jobs[0].st = jobs[0].at;
- jobs[0].ct = jobs[0].at + jobs[0].bt;
- jobs[0].wt = 0;
- jobs[0].tat = jobs[0].bt;
- for (i = 1; i < n; i++){
- jobs[i].st = (jobs[i].at > jobs[i-1].ct) ? jobs[i].at : jobs[i-1].ct;
- //printf("\nAT[%d] CT[%d] | %d %d\n", i, i-1, jobs[i].at, jobs[i-1].ct);
- //printf("jobs[%d].st = %d\n", i, jobs[i].st);
- jobs[i].ct = jobs[i].st + jobs[i].bt;
- jobs[i].tat = jobs[i].ct - jobs[i].at;
- jobs[i].wt = jobs[i].tat - jobs[i].bt;
- }
- sortJobsID(jobs, n);
- printf("\nID\tAT\tBT\tST\tCT\tWT\tTAT");
- for (i = 0; i < n; i++){
- printf("\n%d\t%d\t%d\t%d\t%d\t%d\t%d", jobs[i].id, jobs[i].at, jobs[i].bt, jobs[i].st, jobs[i].ct, jobs[i].wt, jobs[i].tat);
- }
- float avgWT = 0;
- float avgTAT = 0;
- for(i = 0; i < n; i++){
- avgWT += jobs[i].wt;
- avgTAT += jobs[i].tat;
- }
- avgWT /= n;
- avgTAT /= n;
- printf("\nAverage Waiting Time = %f\nAverage Turnaround Time = %f", avgWT, avgTAT);
- }
- int main(){
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment