⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lab17a.c

📁 ALL LINUX LAB PROGRAM MIT MANIPAL 2008-09 BATCH
💻 C
字号:
#include<stdio.h>

int list[30],list1[30];

main()
{
        int m,ch,st,end,head,n,i,j,temp;

        char c;
        do
        {
                system("clear");
                printf("\n MAIN MENU ");
                printf("\n DISK SCHEDULING");
                printf("\n1.FCFS");
                printf("\n2.SSTF");
                printf("\n3.SCAN");
                printf("\n4.C-SCAN");
                printf("\n5.LOOK");
                printf("\n6.C-LOOK");
                printf("\n7. EXIT");

                printf("\n Enter ur choice :");
                scanf("%d",&ch);
                if(ch==7)
                
			system("exit");
               else
{
	 		
                printf("\n Enter the limits of track ie. starting & ending point:");
                scanf("%d %d",&st,&end);
                printf("Enter starting head position :");
                scanf("%d",&head);
                printf("\n Enter the no. of tracks:");
                scanf("%d",&n);
                printf("\n Enter the track list :");
                for(i=0;i<n;i++)
                {
                        scanf("%d",&list[i]);
                        if(list[i]<st || list[i]>end)
                        {       printf("\n INVALID TARCK re_enter please :");
                                scanf("%d",&list[i]);
			}
                }
                // copying list
                for(i=0;i<n;i++)
                        list1[i]=list[i];
                list1[i]=head;
		
		m=n+1;
		//sorting list1
                for(i=0;i<m-1;i++)
                for(j=i+1;j<m;j++)
                {
                        if(list1[i]>list1[j])
                        {
                                temp=list1[i];
                                list1[i]=list1[j];
                                list1[j]=temp;
                        }
                }
		
                printf("\n");
                switch(ch)
                {
                        case 1: fcfs(head,n); break;
        //              case 2: sstf(); break;
                        case 3: scan(head,m,st); break;
                        case 4: c_scan(head,m,st,end); break;
                        case 5: look(head,m); break;
                        case 6: c_look(head,m); break;
                     //   case 7: system("exit");
                        default : printf("\n invalid input");
                }
                printf("\n Do u wanna to continue :");
                scanf(" %c",&c);
        
}
       
}while(c=='y' || c=='Y');

}
fcfs(int head,int n)
{
        int i,x,sum=0;
        //FCFS
        for(i=0;i<n;i++)
        {
                x=head-list[i];
                if(x<0)
                        x*=-1;
                sum=sum+x;
                printf(" %d\n",sum);
                head=list[i];
        }
        printf("\n Total HEAD MOVEMENT is %d",sum);
}


scan(int head,int n,int st)
{
        int i,j,x,y,sum,pos;
        for(i=0;i<n;i++)
        {       if(list1[i]==head)
                        pos=i;
        }
                x=list1[pos]-st;
                y=list1[n-1]-st;
                sum=x+y;
        printf("\n TOTAL HEAD MOVEMENT IS %d",sum);
}

c_scan(int head,int n,int st,int end)
{
        int i,x,y,z,sum,pos;
        for(i=0;i<n;i++)
        {
                if(list1[i]==head)
                        pos=i;
        }
        x=list1[pos]-st; 
        y=end-st;
        z=end-list1[pos+1];
        sum=x+y+z;
        printf("\n TOTAL HEAD MOVEMENT is %d",sum);
}

look(int head,int n)
{
        int i,x,y,sum,pos;
        for(i=0;i<n;i++)
        {
                if(list1[i]==head)
                        pos=i;
        }
        x=list1[pos]-list1[0];
        y=list1[n]-list1[0];
        sum=x+y;
        printf("\n TOTAL HEAD MOVEMENT is %d",sum);
}

c_look(int head,int n)
{
	
        int i,x,y,z,sum,pos;
	for(i=0;i<n;i++)
	{
		if(list1[i]==head)
			pos=i;
	}
printf(" pos=%d",pos);
	x=list1[pos]-list1[0];
	y=list1[n-1]-list1[0];
	z=list1[n-1]-list1[pos+1];
	sum=x+y+z;
	printf("\n TOTAL HEAD MOVEMENT IS %d",sum);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -