<1>
#define MaxNum 320;//指令数
#define M 5;//内存容量
这两家宏定义后面不要; 应去掉分号;
<2>
using namespace std; 这一句可以注释掉,vc++ 6.0对命名空间支持不好的。
<3>
还应包含头文件 #include
<4>
再写个main() 函数就可以了
<5> 换行是 \n ;而不是/n
<6>printf("缺页数= /n",LackNum);
printf("命中率= /n",PageRate); 这两句里应加 %d %f
修改后程序如下:(visual c++ 6.0 编译通过)
#include
#include
#include
#include
//using namespace std;
#define MaxNum 320 //指令数
#define M 5 //内存容量
int PageOrder[MaxNum]; //页面请求
int Simulate[MaxNum][M];//页面访问过程
int PageCount[M],LackNum;//PageCount用来记录LRU算法中最久未使用时间,LackNum记录缺页数
float PageRate;//命中率
bool IsExit(int i)
{//FIFO算法中判断新的页面请求是否在内存中
bool f=false;
for(int j=0;j
f=true;}
}
return f;
}
int IsExitLRU(int i)
{//LRU算法中判断新的页面请求是否在内存中
int f=-1;
for(int j=0;j
f=j;
}
}return f;
}
int Compare()
{//LRU算法找出内存中需要置换出来的页面
int p,q;
p=PageCount[0];
q=0;
for(int i=1;i
q=i;
}
}return q;
}
void Init()
{ //初始化页框
for(int k=0;k
PageOrder[k]=n/10;//根据指令产生320次页面请求
}
for(int i=0;i
}
}
for(int q=0;q
}
}
void OutPut()
{
int i,j;
printf("页面访问序列:\n");
for(j=0;j
printf("%d ",PageOrder[j]);
}
printf("\n");
printf("页面访问过程(只显示前10个):");
for(i=0;i<10;i++){
for(j=0;j
printf(" ");
else
printf("%d ",Simulate[i][j]);
}
printf("\n");
}
printf("缺页数= %d\n",LackNum);
printf("命中率= %f\n",PageRate);
printf("--------------------------------------------------------------\n");
}
void FIFO()
{
int j,x=0,y=0;
LackNum=0,
Init();
for(j=0;j
{
if(j==k)
Simulate[j][k]=PageOrder[j];
else
Simulate[j][k]=Simulate[j-1][k];
}
LackNum++;
}
for(x=M;x
}
if(!IsExit(x)){
LackNum++;
Simulate[x][y%5]=PageOrder[x];
y++;
}
}
PageRate=1-((float)LackNum/(float)MaxNum);
OutPut();
}
void LRU(){
int j,x=0,y=0;
LackNum=0,
Init();
for(j=0;j
{
PageCount[k]++;
if(j==k)
Simulate[j][k]=PageOrder[j];
else
Simulate[j][k]=Simulate[j-1][k];
}
LackNum++;
}
for(x=M;x
}
int p=IsExitLRU(x);
if(p==-1){
int k;
k=Compare();
for(int w=0;w
if(w!=k)
PageCount[w]++;
else
PageCount[k]=1;
}
Simulate[x][k]=PageOrder[x];
LackNum++;
}
else{
for(int w=0;w
PageCount[w]++;
else
PageCount[p]=1;
}
}
}
PageRate=1-((float)LackNum/(float)MaxNum);
OutPut();
}
int main()
{
FIFO();
LRU();
return 0;
}
报的什么错?