[c] dragon

Viewer

  1. #include<stdio.h>
  2. #include<string.h>
  3. struct process
  4. {
  5.   char name[20];
  6.   int at,tt,bt,wt,status,ct;
  7. }p[20],temp;
  8. struct done
  9. {
  10.   char name[20];
  11.   int st,ct;
  12. }d[20];
  13. void main()
  14. {
  15.   int n,i,j,ls,min,fnd,num,idle;
  16.   float twt=0.0,ttt=0.0;
  17.   printf("ENTER THE NUMBER OF PROCESSES : ");
  18.   scanf("%d",&n);
  19.   for(i=0;i<n;i++)                    
  20.   {+
  21.     printf("\nENTER DETAILS OF PROCESS %d",i+1);
  22.     printf("\nPROCESS NAME : ");
  23.     scanf(" %s",p[i].name);
  24.     printf("ARRIVAL TIME : ");
  25.     scanf("%d",&p[i].at);
  26.     printf("BURST TIME : ");
  27.     scanf("%d",&p[i].bt);
  28.     p[i].status = 0;
  29.   }
  30.   for(i=0,ls=0,num=0,idle=0;ls<n;)
  31.   {
  32.     for(j=0,fnd=0;j<n;j++)
  33.     {
  34.       if(i>=p[j].at && p[j].status==0)
  35.       {
  36.         if(fnd==0)
  37.         {
  38.           min = j;
  39.           fnd = 1;
  40.         }
  41.         else if(fnd!=0 && p[min].bt>p[j].bt)
  42.         {
  43.           min = j;
  44.         }
  45.       }
  46.     }
  47.     if(idle==0 && fnd==0)
  48.     {
  49.       strcpy(d[num].name,"Idle");
  50.       d[num].st = i;
  51.       i++;
  52.       idle = 1;
  53.     }
  54.     else if(fnd==1)
  55.     {
  56.       if(idle==1)
  57.       {
  58.         d[num].ct = i;
  59.         num++;
  60.         idle = 0;
  61.       }
  62.       strcpy(d[num].name,p[min].name);
  63.       p[min].status =1;
  64.       d[num].st = i;
  65.       d[num].ct = i + p[min].bt;
  66.       i = d[num].ct;
  67.       p[min].ct = d[num].ct;
  68.       p[min].tt = p[min].ct - p[min].at;
  69.       p[min].wt = p[min].tt - p[min].bt;
  70.       num++;
  71.       ls++;
  72.     }
  73.     else
  74.     {
  75.       i++;
  76.     }
  77.   }
  78.   printf("\nPROCESS NAME\tCOMPLETION TIME (ms)\tWAITING TIME (ms)\tTURNAROUND TIME (ms)\n\n");
  79.   for(i=0;i<n;i++)
  80.   {
  81.     printf("    %s\t\t\t%d\t\t\t%d\t\t\t%d\n",p[i].name,p[i].ct,p[i].wt,p[i].tt);
  82.     twt+=p[i].wt;
  83.     ttt+=p[i].tt;
  84.   }
  85.   printf("\n\nGANTT CHART ");
  86.   printf("\n\t--------------------------------------------------------------------\n\t");
  87.   for(i=0;i<num;i++)
  88.   {
  89.     printf("|");
  90.     printf("%s\t",d[i].name);
  91.   }
  92.   printf(" |");
  93.   printf("\n\t--------------------------------------------------------------------\n\t");
  94.   for(i=0;i<num;i++)
  95.   {
  96.       printf("%d\t",d[i].st);
  97.   }
  98.   printf("%d\t\n",d[num-1].ct);
  99.   printf("\nAVERAGE WAITING TIME : %f",(twt/n));
  100.   printf("\nAVERAGE TURNAROUND TIME : %f\n",(ttt/n));
  101. }

Editor

You can edit this paste and save as new:


File Description
  • dragon
  • Paste Code
  • 19 Apr-2024
  • 2.22 Kb
You can Share it: