fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int n, tq, i, time = 0, done = 0;
  5. int bt[20], rem[20], wt[20], tat[20];
  6.  
  7. printf("Enter number of processes: ");
  8. scanf("%d", &n);
  9.  
  10. if (n <= 0) {
  11. printf("Invalid number of processes.\n");
  12. return 0;
  13. }
  14.  
  15. printf("Enter burst time for each process:\n");
  16. for (i = 0; i < n; i++) {
  17. printf("P%d: ", i + 1);
  18. scanf("%d", &bt[i]);
  19. rem[i] = bt[i];
  20. wt[i] = 0; // Initialize waiting time
  21. }
  22.  
  23. printf("Enter time quantum: ");
  24. scanf("%d", &tq);
  25.  
  26. if (tq <= 0) {
  27. printf("Invalid time quantum.\n");
  28. return 0;
  29. }
  30.  
  31. while (done < n) {
  32. for (i = 0; i < n; i++) {
  33. if (rem[i] > 0) {
  34. if (rem[i] > tq) {
  35. time += tq;
  36. rem[i] -= tq;
  37. } else {
  38. time += rem[i];
  39. wt[i] = time - bt[i];
  40. rem[i] = 0;
  41. done++;
  42. }
  43. }
  44. }
  45. }
  46.  
  47. float total_wt = 0, total_tat = 0;
  48.  
  49. for (i = 0; i < n; i++) {
  50. tat[i] = wt[i] + bt[i];
  51. total_wt += wt[i];
  52. total_tat += tat[i];
  53. }
  54.  
  55. printf("\nProcess\tBT\tWT\tTAT\n");
  56. for (i = 0; i < n; i++) {
  57. printf("P%d\t%d\t%d\t%d\n", i + 1, bt[i], wt[i], tat[i]);
  58. }
  59.  
  60. printf("\nAverage Waiting Time = %.2f", total_wt / n);
  61. printf("\nAverage Turnaround Time = %.2f\n", total_tat / n);
  62.  
  63. return 0;
  64. }
  65.  
Success #stdin #stdout 0s 5320KB
stdin
Enter number of processes: 3
Enter burst times:
P1: 5
P2: 7
P3: 4
Enter time quantum: 2
stdout
Enter number of processes: Invalid number of processes.