?? dd1.cpp
字號(hào):
#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.....................
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -