Untitled

 avatar
unknown
plain_text
9 months ago
5.4 kB
8
Indexable
#include <stdio.h>

void FCFS(int n, int bt[]) {
        int wt[n], tat[n];
            int i;
                float total_wt = 0, total_tat = 0;

                    // Waiting time for first process is 0
                        wt[0] = 0;
                            for (i = 1; i < n; i++) {
                                        wt[i] = wt[i - 1] + bt[i - 1]; // waiting time = sum of previous burst times
                            }

                                // Turnaround time = burst time + waiting time
                                    for (i = 0; i < n; i++) {
                                                tat[i] = bt[i] + wt[i];
                                    }

                                        printf("\n--- FCFS Scheduling ---\n");
                                            printf("Process\tBurst Time\tWaiting Time\tTurnaround Time\n");
                                                for (i = 0; i < n; i++) {
                                                           printf("P%d\t%d\t\t%d\t\t%d\n", i + 1, bt[i], wt[i], tat[i]);
                                                                   total_wt += wt[i];
                                                                           total_tat += tat[i];
                                                }

                                                    printf("Average Waiting Time = %.2f\n", total_wt / n);
                                                        printf("Average Turnaround Time = %.2f\n", total_tat / n);
}

void SJF(int n, int bt[]) {
        int wt[n], tat[n], bt_copy[n];
            int i, j, pos, temp;
                float total_wt = 0, total_tat = 0;

                    // Copy burst times to sort
                        for (i = 0; i < n; i++) {
                                    bt_copy[i] = bt[i];
                        }

                            // Sort burst times (SJF non-preemptive)
                                for (i = 0; i < n - 1; i++) {
                                            pos = i;
                                                    for (j = i + 1; j < n; j++) {
                                                                    if (bt_copy[j] < bt_copy[pos])
                                                                                    pos = j;
                                                    }
                                                            // Swap
                                                                    temp = bt_copy[i];
                                                                            bt_copy[i] = bt_copy[pos];
                                                                                    bt_copy[pos] = temp;
                                }

                                    // Waiting time for first process is 0
                                        wt[0] = 0;
                                            for (i = 1; i < n; i++) {
                                                        wt[i] = wt[i - 1] + bt_copy[i - 1];
                                            }

                                                // Turnaround time = burst time + waiting time
                                                    for (i = 0; i < n; i++) {
                                                                tat[i] = bt_copy[i] + wt[i];
                                                    }

                                                        printf("\n--- SJF Scheduling ---\n");
                                                            printf("Process\tBurst Time\tWaiting Time\tTurnaround Time\n");
                                                                for (i = 0; i < n; i++) {
                                                                            printf("P%d\t%d\t\t%d\t\t%d\n", i + 1, bt_copy[i], wt[i], tat[i]);
                                                                                    total_wt += wt[i];
                                                                                            total_tat += tat[i];
                                                                }

                                                                    printf("Average Waiting Time = %.2f\n", total_wt / n);
                                                                        printf("Average Turnaround Time = %.2f\n", total_tat / n);
}

int main() {
        int n, i;
            printf("Enter number of processes: ");
                scanf("%d", &n);

                    int bt[n];
                        printf("Enter burst time for each process:\n");
                            for (i = 0; i < n; i++) {
                                        printf("P%d: ", i + 1);
                                                scanf("%d", &bt[i]);
                            }

                                FCFS(n, bt);
                                    SJF(n, bt);

                                        return 0;
}
                            }
}
                                                                }
                                                    }
                                            }
                                                    }
                                }
                        }
}
                                                }
                                    }
                            }
}
Editor is loading...
Leave a Comment