۱۳-دى-۱۳۹۸, ۲۳:۵۶:۱۶
در این پست شما می توانید سورس الگوریتم زمانبندی RR به زبان C سی را از ما دریافت کنید.
کد:
#include<stdio.h>
struct job
{
char jid[10];
int at;
int bt;
int wt;
int tt;
}jq[10],rq[100];
int front_jq=0,rear_jq=0;
int front_rq=0,rear_rq=0;
int rt[100];
void gantt_chart(int q)
{
int i,k,val,j=rq[0].at;
printf("\n\nGANTT CHART\n");
for(i=0;i<rear_rq;i++)
{
for(k=0;k<rt[i];k++)
printf("__");
printf(" ");
}
printf("\n");
for(i=0;i<rear_rq;i++)
{
printf("%s",rq[i].jid);
for(k=0;k<rt[i]-1;k++)
printf(" ");
printf(" ");
}
printf("\n");
for(i=0;i<rear_rq;i++)
{
for(k=0;k<rt[i];k++)
printf("__");
printf(" ");
}
printf("\n");
for(i=0;i<rear_rq;i++)
{
if(j<10)
printf("0%d",j);
else
printf("%d",j);
for(k=0;k<rt[i]-1;k++)
printf(" ");
printf(" ");
j+=rt[i];
}
}
int main()
{
float avg_wt=0,avg_tt=0;
int n=0,i,j,q;
FILE *fp;
fp=fopen("rr.txt","r");
fscanf(fp,"%d\n",&q);
do
{
fscanf(fp,"%s\t%d\t%d\n",jq[n].jid,&jq[n].at,&jq[n].bt);
jq[n].wt=0;
jq[n].tt=0;
n++;
}
while(!feof(fp));
fclose(fp);
rear_jq=n;
rr_scheduling(q,n);
for(i=0;i<n;i++)
jq[i].tt=jq[i].bt+jq[i].wt;
printf("\nSCHEDULING\n");
for(i=0;i<rear_rq;i++)
{
if(i==rear_rq-1)
printf("%s",rq[i].jid);
else
printf("%s --> ",rq[i].jid);
}
gantt_chart(q);
printf("\n\nJID\tAT\tBT\tWT\tTT\n");
for(i=0;i<n;i++)
{
printf("%s\t%d\t%d\t%d\t%d\n",jq[i].jid,jq[i].at,jq[i].bt,jq[i].wt,jq[i].tt);
avg_wt+=jq[i].wt;
avg_tt+=jq[i].tt;
}
printf("Average Waiting Time:: %.2f\n",avg_wt/n);
printf("Average Turnaround Time:: %.2f\n",avg_tt/n);
return 0;
}