#include<stdio.h>
char pName[20][15],c[20];
int bTime[20],aTime[20],tot_pro,Twt,Ttt,Wt[10];
float Awt,Att;
//DISPLAYING THE GANTT CHART
void Gantt_chart()
{
int i;
printf("\n\n\t\t\tGANTT CHART\n");
printf("\n-----------------------------------------------------------\n");
for(i=1;i<=tot_pro;i++)
printf("|\t%s\t",pName[i]);
printf("|\t\n");
printf("\n-----------------------------------------------------------\n");
printf("\n");
for(i=1;i<=tot_pro;i++)
printf("%d\t\t%d|",Wt[i],(Wt[i]+bTime[i]));
printf("\n-----------------------------------------------------------\n");
printf("\n");
}
void Calculate()
{
int i,T; //T strt from Intial Time & goes to End
//For the 1st process
Wt[1]=aTime[1],T=aTime[1];
for(i=2;i<=tot_pro;i++)
{
T+=bTime[i-1];
if( (T-aTime[i])>=0 )
{
Wt[i]=T;
}
else
{
T=(aTime[i]);
Wt[i]=T;
}
}
for(i=1;i<=tot_pro;i++)
{
Twt=Twt+(Wt[i]-aTime[i]);
Ttt=Ttt+((Wt[i]+bTime[i])-aTime[i]);
}
Att=(float)Ttt/tot_pro;
Awt=(float)Twt/tot_pro;
printf("\n\n Average Turn around time=%3.2f ms ",Att);
printf("\n\n AverageWaiting Time=%3.2f ms",Awt);
}
int main()
{
int i,j,tmp,flag;
//----------Take Input---------//
printf("Enter the Total No of Process: ");
scanf("%d",&tot_pro);
for(i=1;i<=tot_pro;i++)
{
printf("\n\nEnter the Process %d Name :",(i));
scanf("%s",&pName[i]);
printf("\nEnter the Burst Time : ");
scanf("%d",&bTime[i]);
printf("\nEnter the Arrival Time :");
scanf("%d",&aTime[i]);
}
for(i=1;i<tot_pro;i++)
{
for(j=i+1;j<=tot_pro;j++)
{
flag=0;
if(aTime[i]>aTime[j])
{
flag=1;
}
else
if(aTime[i]==aTime[j])
{
if(bTime[i]>bTime[j])
flag=1;
}
if(flag)
{
tmp=bTime[i];
bTime[i]=bTime[j];
bTime[j]=tmp;
tmp=aTime[i];
aTime[i]=aTime[j];
aTime[j]=tmp;
strcpy(c,pName[i]);
strcpy(pName[i],pName[j]);
strcpy(pName[j],c);
}
}
}
Calculate();
Gantt_chart();
return 0;
}Implementing Non Preemptive SJF - Drwa Gantt Chart and calculate Avergae Waiting Time and Average turn Around Time
Subscribe to:
Posts (Atom)
No comments:
Post a Comment