码迷,mamicode.com
首页 > 其他好文 > 详细

实验二 调度

时间:2015-05-08 09:19:03      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>
#include <string.h>

void   main()
{
	int    i=0,j=0,finish=0,n=0,k=0,l,m;
	int start,temp,max=1,min,respond[24];
	int reach[24],running[24];
    FILE   *fp;
    char   filename[100];
    char  str[1000];
	printf("\nEnter a filepath/filename:\n");
    gets(filename);             //输文件目录
	fp=fopen(filename, "rt");
//	fp=fopen("c:/1.txt","rt");
    if(fp==NULL)
    {
		printf("cannot open file\n");
		return;
	}
	printf("到达时间\t所需运行时间\n");
    while (fgets(str,1000,fp))
    {
		sscanf(str,"%d,%d\n",reach+i,running+i);
		
        printf("%d\t\t%d\n",reach[i],running[i]);
		i++;
	}
	fclose(fp);
		for(j=0;j<i;j++) 
		{
			for (k=0;k<i-j;k++) 
			{
				if (reach[k]>reach[k+1]) 
				 {
					temp=running[k];	
					running[k]=running[k+1]; 
					running[k+1]=temp;
					temp=reach[k];					
					reach[k]=reach[k+1]; 
					reach[k+1]=temp;
				}   
			}
		}
	printf("1.fcfs\n2.SJF\n3.HRRN\n");
	scanf("%d",&n);
	
	start=reach[1];
	if(n==1)
	{              //fcfs
		printf("fcfs\n");
		printf("作业编号 开始时间\t运行时间\t完成时间\t周转时间  带权周转时间\n");
		for(j=1;j<=i;j++)
		{

			printf("%d\t%d\t\t%d\t\t%d\t\t%d\t  %f\n",j,start,running[j],start+running[j],start+running[j]-reach[j],(float)(start+running[j]-reach[j])/running[j]);
			start=start+running[j];
			if(start<reach[j+1]) //到达时间与运行时间比较
				start=reach[j+1];
		}

	}
	if(n==2)
	{              //sjf
		printf("sjf\n");
		printf("作业编号 开始时间\t运行时间\t完成时间\t周转时间  带权周转时间\n");
		start=reach[1];
		for(j=1;j<=i;j++)
		{

			printf("%d\t%d\t\t%d\t\t%d\t\t%d\t  %f\n",j,start,running[j],start+running[j],start+running[j]-reach[j],(float)(start+running[j]-reach[j])/running[j]);
			
			for(k=j;k<=i;k++)
			{
				if(start+running[j]>reach[k+1])
					max=k;

			}
			for(l=j;l<max;l++) 
			{
				for (m=0;m<max-l;m++) 
				{
					if (running[m]>running[m+1]) 
					{
						temp=running[m];	
						running[m]=running[m+1]; 
						running[m+1]=temp;
						temp=reach[m];					
						reach[m]=reach[m+1]; 
						reach[m+1]=temp;
					}   
				}
			}
			start=start+running[j];	
			if(start<reach[j+1]) //到达时间与运行时间比较
				start=reach[j+1];			
		}	 
	}

	if(n==3){
			printf("hrrf\n");
			start=reach[1];
			printf("作业编号 开始时间\t运行时间\t完成时间\t周转时间  带权周转时间\n");
		
				for(j=1;j<=i;j++)
				{
					printf("%d\t%d\t\t%d\t\t%d\t\t%d\t  %f\n",j,start,running[j],start+running[j],start+running[j]-reach[j],(float)(start+running[j]-reach[j])/running[j]);
			        start=start+running[j];	
			
					for(k=j;k<=i;k++)
					{
						if(start+running[j]>reach[k+1])
							max=k;

					}
					for(k=2;k<=max;k++){
						if(start!=reach[k]){
							respond[k]=1+running[k]/(start-reach[k]);//响应比
						}
					}
					
					for(l=j;l<max;l++) 
					{
						for (m=0;m<max-l;m++) 
						{
							if (respond[m]>respond[m+1]) 
							{
								temp=running[m];	
								running[m]=running[m+1]; 
								running[m+1]=temp;
								temp=reach[m];					
								reach[m]=reach[m+1]; 
								reach[m+1]=temp;
								temp=respond[m];					
								respond[m]=respond[m+1]; 
								respond[m+1]=temp;
							}   
						}
					}



			}
		}
				

}




  

 

 技术分享

技术分享技术分享技术分享

实验二 调度

标签:

原文地址:http://www.cnblogs.com/cckuang/p/4486668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!