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

📄 dd1.cpp

📁 this is my project and used in disk scheduling enjoy/!!!
💻 CPP
字号:
#include<dos.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
sstf();

begin();

int drawlinefrd(int,int);
int drawlinebkd(int,int);
int y=50;
int x=0;     int d3;int d4=0;int d5;
int q=1;      int d2=0;int d6=0;int d7;
int n;
int a[15],l[15],r[15],st;
int cl[15],cr[15],d1;
int b[15],c[15];
int k[20];
main()
{
 clrscr();
 int dr=DETECT,gm,ch;
 initgraph(&dr,&gm,".....\bgi");
 int i,m,temp,num;
 int lpos=0,rpos=0,j;
 int min1=0,min,next=0;

 begin();

  cleardevice();
 setbkcolor(BLACK);
 printf("Enter the number of request ");
 scanf("%d",&n);
 if(n>10 || n<0)
 {
 printf("Enter between 0 to 10");
 getch();
 exit(0);
 }
 label:
 gotoxy(10,5);
 printf("Enter the start point (non -ve number < 200) ");
 scanf("%d",&a[0]);
 if(a[0]>200 || a[0]<0)
 {
  printf("Enter non -ve number less than 200");
  cleardevice();
 goto label;
 }
 label1:
 gotoxy(15,10);
 printf("Enter the cylinder \n");

 for(i=1;i<=n;i++)
 {
   scanf("%d",&a[i]);
   if(a[i]>200 || a[i]<0 || a[i]==a[i-1])
   {
    printf("Enter less than 200 and more than 0 and non-repeating number.");
    getch();
    cleardevice();
    goto label1;
   }
 }

 for(i=0;i<=n;i++)
  a[i]=2*a[i];
 for(i=0;i<=n;i++)
  c[i]=a[i];

min=abs(a[0]-a[1]);
while(ch<7)
{
 cleardevice();
 setfillstyle(SOLID_FILL,8);
 bar(0,0,650,100);
 bar(0,370,650,550);
 bar(0,100,100,400);
 bar(500,100,650,400);
 setbkcolor(RED);
 settextstyle(7,0,1);
 setcolor(YELLOW);
 outtextxy(120,130,"DISK SCHEDULING ALGORITHM MENU");
 outtextxy(120,170,"1. FIRST IN FIRST OUT");
 outtextxy(120,190,"2. SHORTEST SEEK TIME FIRST");
 outtextxy(120,210,"3. SCAN SCHEDULING");
 outtextxy(120,230,"4. C-SCAN SCHEDULING");
 outtextxy(120,250,"5. LOOK SCHEDULING");
 outtextxy(120,270,"6. EXIT ");
 outtextxy(120,330," ENTER YOUR CHOICE:  ");
 gotoxy(45,22);
 scanf("%d",&ch);
 cleardevice();

 x=a[0],st=x;
// setbkcolor(BLACK);
 setfillstyle(SOLID_FILL,LIGHTGRAY);
 bar(0,50,400,450);
 settextstyle(2,0,4);
 line(0,40,0,55);
  line(25,45,25,50);
  outtextxy(0,30,"0");
 line(50,40,50,55);
  line(75,45,75,50);
  outtextxy(50,30,"25");
 line(100,40,100,55);
  line(125,45,125,50);
  outtextxy(100,30,"50");
 line(150,40,150,55);
  line(175,45,175,50);
  outtextxy(150,30,"75");
 line(200,40,200,55);
  line(225,45,225,50);
  outtextxy(200,30,"100");
 line(250,40,250,55);
  line(275,45,275,50);
  outtextxy(250,30,"125");
 line(300,40,300,55);
  line(325,45,325,50);
  outtextxy(300,30,"150");
 line(350,40,350,55);
  line(375,45,375,50);
  outtextxy(350,30,"175");
 line(400,40,400,55);
  outtextxy(400,30,"200");
// setbkcolor(RED);
 setlinestyle(DOTTED_LINE,1,1);
 line(0,55,0,450);
 line(100,55,100,450);
 line(200,55,200,450);
 line(300,55,300,450);
 line(400,55,400,450);
 line(50,55,50,450);
 line(150,55,150,450);
 line(250,55,250,450);
 line(350,55,350,450);
 gotoxy(55,7);
 printf(" THE POINTS ARE:");
 gotoxy(55,6);
 printf("STARTING POINT IS:%d",st/2);
 switch(ch)
 {
  case 1: setcolor(GREEN);
	  settextstyle(7,0,2);
	  outtextxy(100,0,"FIRST COME FIRST SERVE ALGORITHM");
	  st=a[0];
	  x=st;
	  q=0;
	  y=50;

		for(i=1;i<=n;i++)
		{
		if(a[i]<st)
		 {
		  m=a[i];
		  d1=abs(m-st)/2;
		  x=drawlinebkd(m,st);
		  st=x;
		  d2=d1+d2;
		 }
		else
		 {
		  m=a[i];
		  d3=abs(m-st)/2+1;
		  x=drawlinefrd(m,st);
		  st=x;
		  d4=d3+d4;
		 }
		}getch();
		 d5=d2+d4-1;
		 printf("Latency Time= %d",d5); d5=0;d4=0;d2=0;	  getch();
//	   calculation();
	       //	cleardevice();
		   break;
  case 2:  setcolor(GREEN);
	   settextstyle(7,0,2);
	   int sstfthr;
	   outtextxy(90,0,"SHORTEST SEEK TIME FIRST ALGORITHM");
	   sstf();
	   getch();
  //	   calculation();
	   //sstfthr=throughput;
	   break;
    case 3:  setcolor(GREEN);
	   settextstyle(7,0,2);
	   outtextxy(200,0,"SCAN SCHEDULING");
	   int scanthr;
	   st=a[0];
	   lpos=0,rpos=0,q=0;
	   x=st,y=50;

		 for(i=0;i<=n;i++)
		 {
		 if(st>=a[i])
		  {
		  r[rpos]=a[i];
		  rpos=rpos+1;
		  }
		 else
		  {
		  l[lpos]=a[i];
		  lpos=lpos+1;
		  }
		 }

		// sorting....

		 for(j=0;j<lpos;j++)
		{
		 for(i=0;i<lpos;i++)
		  {
		  if(l[i]>l[i+1])
		    {
		    temp=l[i];
		    l[i]=l[i+1];
		    l[i+1]=temp;
		    }
		  }
		}
		for(j=0;j<rpos;j++)
		{
		 for(i=0;i<rpos;i++)
		 {
		  if(r[i]<r[i+1])
		  {
		   temp=r[i];
		   r[i]=r[i+1];
		   r[i+1]=temp;
		  }
		 }
		}

		for(i=0;i<rpos+1;i++)
		{

		 m=r[i];
		 d1=abs(m-st)/2;
		 x=drawlinebkd(m,st);
		 st=x;
		 d2=d2+d1;
		 }

		for(i=0;i<=lpos;i++)
		{
		 m=l[i];
		 d3=abs(m-st)/2+1;
		 x=drawlinefrd(m,st);
		 st=x;
		 d4=d4+d3;
		}

		d5=d4+d2-1; printf("\nLatency Time= %d",d5);
		for(i=0;i<=rpos;i++)
		k[i]=r[i]/2;
	       for(i=0;i<=lpos;i++)
	       k[i]=l[i]/2;
	  getch();
	 // cleardevice();
	  //scan();

	  getch();   d5=0;d4=0;d2=0;
  //	  calculation();
	 // scanthr=throughput;
	  break;

    case 4:  setcolor(GREEN);
	   settextstyle(7,0,2);
	   int cscanthr,da;
	   outtextxy(200,0,"C-SCAN SCHEDULING");
	   st=a[0];
	   lpos=rpos=q=0;
	   x=st,y=50;
		 for(i=0;i<=n;i++)
		  {
		   if(a[i]<st)
		   {
		    cl[lpos]=a[i];
		    lpos++;
		   }
		   else
		   {
		    cr[rpos]=a[i];
		    rpos++;
		   }
		  }

		 for(j=0;j<lpos;j++)
		 {
		  for(i=0;i<lpos;i++)
		  {
		   if(cl[i]>cl[i+1])
		   {
		    temp=cl[i];
		    cl[i]=cl[i+1];
		    cl[i+1]=temp;
		   }
		  }
		 }
		 for(j=0;j<rpos;j++)
		 {
		  for(i=0;i<rpos;i++)
		  {
		   if(cr[i]>cr[i+1])
		   {
		    temp=cr[i];
		    cr[i]=cr[i+1];
		    cr[i+1]=temp;
		   }
		  }
		 }
		 // drawing line

		 for(i=1;i<=rpos+1;i++)
		 {
		   m=cr[i];
		   d1=abs(m-st)/2;
		   x=drawlinefrd(m,st);
		   st=x;
		   d2=d1+d2;
		 }
		 d1=0;
		 x=drawlinebkd(cl[0],st); //da=abs(cl[0]-st)/2; printf("Distance=%d",da);
		 st=x;
		 for(i=1;i<=lpos;i++)
		 {
		  if(cl[i]<0 || cl[i]>400)
		   break;
		  else
		  {
		   m=cl[i];  d3=abs(m-st)/2;
		   x=drawlinefrd(m,st);
		   st=x;
		   d4=d3+d4;//  printf("Distance=%d",d3);
		  }
		 }
	       d5=d2+d4;
	       printf("Latency Time= %d",d5);
	       for(i=0;i<rpos;i++)
		k[i]=cr[i]/2;
	       for(i=0;i<lpos;i++)
		k[rpos+i]=cl[i]/2;
	       d5=d4=d2=0;
	  //cscan();
	  getch();
    //	  calculation();
       //	 cscanthr=throughput;
	  break;
  case 5:  setcolor(GREEN);
	   settextstyle(7,0,2);
	   int lookthr;
	   outtextxy(200,0,"LOOK SCHEDULING");
	   st=a[0];
	   lpos=rpos=q=0;
	   x=st,y=50;
		 for(i=0;i<=n;i++)
		  {
		   if(a[i]<st)
		   {
		    cl[lpos]=a[i];
		    lpos++;
		   }
		   else
		   {
		    cr[rpos]=a[i];
		    rpos++;
		   }
		  }

		 for(j=0;j<lpos;j++)
		 {
		  for(i=0;i<lpos;i++)
		  {
		   if(cl[i]>cl[i+1])
		   {
		    temp=cl[i];
		    cl[i]=cl[i+1];
		    cl[i+1]=temp;
		   }
		  }
		 }
		 for(j=0;j<rpos;j++)
		 {
		  for(i=0;i<rpos;i++)
		  {
		   if(cr[i]>cr[i+1])
		   {
		    temp=cr[i];
		    cr[i]=cr[i+1];
		    cr[i+1]=temp;
		   }
		  }
		 }
		 // drawing line
		 for(i=1;i<rpos+1;i++)
		 {

		   m=cr[i];
		   d1=abs(m-st)/2;
		   x=drawlinefrd(m,st);
		   st=x;
		   d2=d2+d1;
		 }
		 x=drawlinebkd(cl[1],st);d7=abs(cl[1]-st)/2;
		 st=x;
		 for(i=1;i<lpos+1;i++)
		 {

		   m=cl[i]; d3=abs(m-st)/2+1;
		   x=drawlinefrd(m,st);
		   st=x;    d4=d3+d4;

		 }d5=d2+d4+d7;
		 printf("Latency Time= %d",d5);d2=d4=d5=d7=0;
	       for(i=0;i<rpos;i++)
		k[i]=cr[i]/2;
	       for(i=0;i<lpos;i++)
		k[rpos+i]=cl[i]/2;


	   getch();
      //	   calculation();
	   //lookthr=throughput;
	   //look(xit);
	  break;
  case 6:
	  exit(0);

  default:cleardevice();
	  gotoxy(27,14);
	  printf("ENTER CHOICE FROM 1 TO 6");
}
getch();
}
getch();
}


//___________________________

int drawlinefrd(int a,int st)
{
 int j;
 int i=0;
  for(j=0;j<=(a-st);j++)
 {
 i=j/4;
 putpixel(x+j,y+i,BLUE);
 delay(20);
 }
 setcolor(BLACK);
 setfillstyle(SOLID_FILL,BLACK);
 circle(x+j,y+i,2);
 floodfill(x+j,y+i,0);
 y=y+i;
 x=x+j;
 gotoxy(55,8+q);
 printf("%d",a/2);
  delay(500);
 q++;
 return (x);
}

//++++++++++++++++++++++++++++

int drawlinebkd(int a,int st)
{
  int j;
  int i=0;
  for(j=0;j<(st-a);j++)
 {
 i=j/4;
 putpixel(x-j,y+i,BLACK);
 delay(20);
 }
 setcolor(BLACK);
 setfillstyle(SOLID_FILL,BLACK);
 circle(x-j,y+i,2);
 floodfill(x-j,y+i,0);
 x=st-j;
 y=y+i;
 gotoxy(55,8+q);
 printf("%d",a/2);
 delay(500);
 q++;
 return(x);
 }

//function defn.------------------------------------------------------
//--------------------------------------------------------------------

sstf()
{
  int n1,i,m;

  q=1,y=50;

 for(i=0;i<=n;i++)
  c[i]=a[i];

 int num=0;
 n1=n;
 int min1,min,j=0,next=0;
int pos=0,flag=0;
int st=c[0];
while(n1!=0)
{
 min=400;
for(i=0;i<=n1;i++)
  {
   min1=abs(st-c[i]);
   if(min>=min1)
   {
    min=min1;
    if(st<c[i])
    {
     next=abs(min+st);
     pos=i;
    }
    else
    {
     next=abs(min-st);
     pos=i;
    }
   }
  }
  b[j]=next;
  j++;
  num++;
   for(i=0;i<=n1;i++)
   if(c[i]==next)
   {
    pos=i;
    flag=1;
    break;
   }
  if(flag==1)
  {
  for(i=0;i<=n1;i++)
  {
   c[pos]=c[pos+1];
   pos++;
  }
  }
 st=next;
 n1=n1-1;
}
st=b[0];
x=st; b[num]=c[n1];
for(i=1;i<=num;i++)
{
 if(b[i]<st)
 {
  m=b[i];  d1=abs(m-st)/2;
  x=drawlinebkd(m,st);
  st=x; d2=d1+d2;
 }
 else
 {
  m=b[i];d3=abs(m-st)/2;
  x=drawlinefrd(m,st);
  st=x;     d4=d3+d4;
 }
}d5=d4+d2;       printf("Latency Time= %d",d5);   d5=d4=d2=0;
for(i=1;i<=num;i++)
 k[i]=b[i]/2;
//getch();
}

//++++++++++++++++++++++++++++++++++++++++
begin()
{
 int i;
 setbkcolor(RED);
 settextstyle(7,0,4);
 for(i=0;i<180;i+=5)
 {
 cleardevice();
 setcolor(GREEN);
 outtextxy(20,-50+i,"SIMULATION OF DISK-SCHEDULING");
 delay(10);
 }
 for(i=0;i<600;i+=5)
 {
 setcolor(WHITE);
 line(17,130,20+i,130);
 line(615,160,610-i,160);
 delay(10);
 }
 settextstyle(2,0,5);
  setcolor(YELLOW);
  outtextxy(250,180,"DEVELOPED BY");
  settextstyle(1,0,3);
  outtextxy(200,210,"FARAZ KHAN");
   setcolor(WHITE);
  delay(200);
  settextstyle(2,0,5);
  setcolor(WHITE);
  outtextxy(400,450,"Press any key to continue...");
 getch();
  setcolor(BLUE);
  for(i=0;i<250;i++)
  {
   rectangle(0+i,0+i,639-i,479-i);
   delay(1);
  }
}

// defn of about.....................

⌨️ 快捷键说明

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