📄 lih.cpp
字号:
#include<stdio.h>
int max(int x,int y,int z)
{int t;
if(x>=y)
{if(x>=z) t=x;
else t=z;
}
else{if(y>=z) t=y;
else t=z;
}
return t;
}
int compare1(int *p,int m,int n)
{int i,j=0;
for(i=0;i<3;i++)
if(*(p+m)==*(p+i))
j=1;
if(j==1) return n;
else
{for(i=0;i<2;i++)
*(p+i)=*(p+i+1);
*(p+2)=*(p+m);
return (n+1);
}
}
int compare2(int *p,int m,int n)
{int k,i;
for(i=0;i<3;i++)
if(*(p+m)==*(p+i))
{for(k=i;k<3-i;k++)
*(p+k)=*(p+k+1);
*(p+2)=*(p+m);
return n;
}
for(i=0;i<2;i++)
*(p+i)=*(p+i+1);
*(p+2)=*(p+m);
return (n+1);
}
int compare3(int *p,int m,int n,int k)
{int i,j=0,a=1,b=1,c=1,l,t;
for(i=0;i<3;i++)
if(*(p+m)==*(p+i))
j=1;
if(j==1) return n;
else
{ for(l=m+1;l<k;)
if(*p!=*(p+l))
{a++;
l++;
}
else l=k;
for(l=m+1;l<k;)
if(*(p+1)!=*(p+l))
{b++;
l++;
}
else l=k;
for(l=m+1;l<k;)
if(*(p+2)!=*(p+l))
{c++;
l++;
}
else l=k;
t=max(a,b,c);
if(t==a) *p=*(p+m);
else
{ if(t==b) *(p+1)=*(p+m);
else *(p+2)=*(p+m);
}
return (n+1);
}
}
void lih()
{int i=0,j=3,m=3,n=3,k,x=-1;
int buff[20],data[3];
int *p,*q,*s;
p=q=s=buff;
printf("\nx=1:FIFO页面调度算法\nx=2:LRU页面调度算法\nx=3:OPT页面调度算法\n");
printf("\n请输入你的程序中要调用的所有的页 :\n");
scanf("%d",&buff[0]);
while(buff[i]!=1000)
{i++;
scanf("%d",&buff[i]);
}
for(k=0;k<3;k++)
data[k]=buff[k];
printf("\n请输入你选择的页面调度算法\n");
while(x!=0)
{ scanf("%d",&x);
if(x==1)
{
printf("\n 采用FIFO的页面调度算法 \n");
printf("\n此时内存中页面为 %d,%d,%d\n",*p,*(p+1),*(p+2));
for(k=3;k<i;k++)
{j=compare1(p,k,j);
printf("\n此时内存中页面为 %d,%d,%d\n",*p,*(p+1),*(p+2));
}
printf("\n中断的总次数为 %d\n",j);
}
if(x==2)
{
for(k=0;k<3;k++)
buff[k]=data[k];
printf("\n 采用LRU的页面调度算法 \n");
printf("\n此时内存中页面为 %d,%d,%d\n",*q,*(q+1),*(q+2));
for(k=3;k<i;k++)
{m=compare2(q,k,m);
printf("\n此时内存中页面为 %d,%d,%d\n",*q,*(q+1),*(q+2));
}
printf("\n中断的总次数为 %d\n",m);
}
if(x==3)
{
for(k=0;k<3;k++)
buff[k]=data[k];
printf("\n 采用OPT页面调度算法 \n");
printf("\n此时内存中页面为 %d,%d,%d\n",*s,*(s+1),*(s+2));
for(k=3;k<i;k++)
{n=compare3(s,k,n,i);
printf("\n此时内存中页面为 %d,%d,%d\n",*s,*(s+1),*(s+2));
}
printf("\n中断的总次数为 %d\n",n);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -