急!编译后:未声明的标识符
#include "iostream.h"
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include "stdafx.h"
#define Bsize 4
typedef struct BLOCK//声明一种新类型——物理块类型
{ int pagenum;//页号
int accessed;//访问字段,其值表示多久未被访问
}BLOCK;
int pc;//程序计数器,用来记录指令的序号
int n;//缺页计数器,用来记录缺页的次数
static int temp[320];//用来存储320条随机数
BLOCK block[Bsize]; //定义一大小为4的物理块数组
void init( ); //程序初始化函数
int findExist(int curpage);//查找物理块中是否有该页面
int findSpace( );//查找是否有空闲物理块
int findReplace( );//查找应予置换的页面
void display ( );//显示
void suijishu( );//产生320条随机数,显示并存储到temp[320]
void pagestring( );//显示调用的页面队列
void OPT( );//OPT算法
void LRU( );// LRU算法
void FIFO( );//FIFO算法
void init( )
{
for(int i=0;i<Bsize;i++)
{
block[i].pagenum=-1;
block[i].accessed=0;
pc=n=0;
}
}
int findExist(int curpage)
{
for(int i=0; i<Bsize; i++)
{
if(block[i].pagenum == curpage )
return i;//检测到内存中有该页面,返回block中的位置}
return -1;
}
}
int findSpace( )
{
for(int i=0; i<Bsize; i++)
{
if(block[i].pagenum == -1)
return i;//找到空闲的block,返回block中的位置}
} return -1;
}
int findReplace( )
{
int pos = 0;
for(int i=0; i<Bsize; i++)
{
if(block[i].accessed >block[pos].accessed)
pos = i;//找到应予置换页面,返回BLOCK中位置 }
return pos;
}
}
void display( )
{ for(int i=0; i<Bsize; i++)
{ if(block[i].pagenum != -1)
{
printf(" %02d",block[i].pagenum);
}
}
cout<<endl;
}
void suijishu( )
{
int flag=0;
cin>>pc;
cout<<"******按照要求产生的320个随机数:*******"<<endl;
for(int i=0;i<320;i++)
{
temp[i]=pc;
if(flag%2==0) pc=++pc%320;
if(flag==1) pc=rand( )% (pc-1);
if(flag==3) pc=pc+1+(rand( )%(320-(pc+1)));
flag=++flag%4;
printf(" %03d",temp[i]);
if((i+1)%10==0) cout<<endl;
}
}
void pagestring( )
{
for(int i=0;i<320;i++)
{
printf(" %02d",temp[i]/10);
if((i+1)%10==0) cout<<endl;
}
}
void OPT( )
{ int exist,space,position ;
int curpage;
for(int i=0;i<320;i++)
{ if(i%100==0) getch( );
pc=temp[i];
curpage=pc/10;
exist = findExist(curpage);
if(exist==-1)
{ space = findSpace ( );
if(space != -1)
{ block[space].pagenum = curpage;
display( );
n=n+1;
}
else
{ for(int k=0;k<Bsize;k++)
{for(int j=i;j<320;j++)
{if(block[k].pagenum!= temp[j]/10)
{ block[k].accessed = 1000;
}//将来不会用,设置为一个很大数
else
{ block[k].accessed = j;
break;
}
}
}
position = findReplace( );
block[position].pagenum = curpage;
display( );
n++;
}
}
}
cout<<"缺页次数:"<<n<<endl;
cout<<"缺页率:"<<(n/320.0)*100<<"%"<<endl;
}
void LRU( )
{ int exist,space,position ;
int curpage;
for(int i=0;i<320;i++)
{ if(i%100==0) getch( );
pc=temp[i];
curpage=pc/10;
exist = findExist(curpage);
if(exist==-1)
{ space = findSpace( );
if(space != -1)
{ block[space].pagenum = curpage;
display( );
n=n+1;
}
else
{ position = findReplace( );
block[position].pagenum = curpage;
display( );
n++;
}
}
else block[exist].accessed = -1;//恢复存在的并刚访问过的BLOCK中页面accessed为-1
for(int j=0; j<4; j++)
{
block[j].accessed++;
}
}
cout<<"缺页次数:"<<n<<endl;
cout<<"缺页率:"<<(n/320.0)*100<<"%"<<endl;
}
void FIFO( )
{
int exist,space,position ;
int curpage;
for(int i=0;i<320;i++)
{
if(i%100==0) getch( );
pc=temp[i];
curpage=pc/10;
exist = findExist(curpage);
if(exist==-1)
{space = findSpace( );
if(space != -1)
{ block[space].pagenum = curpage;
display( );
n=n+1;
}
else
{ position = findReplace( );
block[position].pagenum = curpage;
display( );
n++;
block[position].accessed--;
}
}
for(int j=0; j<Bsize; j++)
block[j].accessed++;}
cout<<"缺页次数:"<<n<<endl;
cout<<"缺页率:"<<(n/320.0)*100<<"%"<<endl;
}
void main( )
{
int select;
cout<<"请输入第一条指令号(0~320):";
suijishu( );
cout<<"*****对应的调用页面队列*******"<<endl;
pagestring( );
do
{ cout<<"****************************************"<<endl;
cout<<"------1:OPT 2:LRU 3:FIFO 4:退出-----"<<endl;
cout<<"****************************************"<<endl;
cout<<" 请选择一种页面置换算法:";
cin>>select;
cout<<"****************************************"<<endl;
init( );
switch(select)
{ case 1:cout<<"最佳置换算法OPT:"<<endl;
cout<<"*****************"<<endl;
OPT( );
break;
case 2:cout<<"最近最久未使用置换算法LRU:"<<endl;
cout<<"**************************"<<endl;
LRU( );
break;
case 3:cout<<"先进先出置换算法FIFO:"<<endl;
cout<<"*********************"<<endl;
FIFO( );
break;
default: ;
}
}while(select!=4);
}
编译后:
错误1error C2065: “cout”: 未声明的标识符c:\documents and settings\administrator\桌面\czxtkcsj\czxtkcsj\czxtkcsj.cpp69
错误2error C2065: “endl”: 未声明的标识符c:\documents and settings\administrator\桌面\czxtkcsj\czxtkcsj\czxtkcsj.cpp69
错误3error C2065: “cin”: 未声明的标识符c:\documents and settings\administrator\桌面\czxtkcsj\czxtkcsj\czxtkcsj.cpp74
错误4error C3861: “rand”: 找不到标识符c:\documents and settings\administrator\桌面\czxtkcsj\czxtkcsj\czxtkcsj.cpp80
错误5error C3861: “rand”: 找不到标识符c:\documents and settings\administrator\桌面\czxtkcsj\czxtkcsj\czxtkcsj.cpp81
错误6error C3861: “getch”: 找不到标识符c:\documents and settings\administrator\桌面\czxtkcsj\czxtkcsj\czxtkcsj.cpp99
错误7error C3861: “getch”: 找不到标识符c:\documents and settings\administrator\桌面\czxtkcsj\czxtkcsj\czxtkcsj.cpp136
错误8error C3861: “getch”: 找不到标识符c:\documents and settings\administrator\桌面\czxtkcsj\czxtkcsj\czxtkcsj.cpp169
怎么回事?
[解决办法]
第一行:#include "iostream.h"
改为:#include <iostream.h>
或:#include <iostream>
using namespace std;
[解决办法]
#include <iostream>
using namespace std;
[解决办法]
VS2005下,我简单的帮你改了改,编译通过了,其他的错误你自己再调试吧.
- C/C++ code
//#include "iostream.h"
//改为
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
//下面能通过?
//#include "stdafx.h"
//使用命名空间std
using namespace std;
#define Bsize 4
typedef struct BLOCK//声明一种新类型——物理块类型
{ int pagenum;//页号
int accessed;//访问字段,其值表示多久未被访问
}BLOCK;
int pc;//程序计数器,用来记录指令的序号
int n;//缺页计数器,用来记录缺页的次数
static int temp[320];//用来存储320条随机数
BLOCK block[Bsize]; //定义一大小为4的物理块数组
void init( ); //程序初始化函数
int findExist(int curpage);//查找物理块中是否有该页面
int findSpace( );//查找是否有空闲物理块
int findReplace( );//查找应予置换的页面
void display ( );//显示
void suijishu( );//产生320条随机数,显示并存储到temp[320]
void pagestring( );//显示调用的页面队列
void OPT( );//OPT算法
void LRU( );// LRU算法
void FIFO( );//FIFO算法
void init( )
{
for(int i=0;i <Bsize;i++)
{
block[i].pagenum=-1;
block[i].accessed=0;
pc=n=0;
}
}
//返回值有问题
int findExist(int curpage){
for(int i=0; i <Bsize; i++){
if(block[i].pagenum == curpage )
return i;//检测到内存中有该页面,返回block中的位置
}
//return -1放下面
return -1;
}
int findSpace( )
{
for(int i=0; i <Bsize; i++)
{
if(block[i].pagenum == -1)
return i;//找到空闲的block,返回block中的位置}
} return -1;
}
int findReplace( ){
int pos = 0;
for(int i=0; i <Bsize; i++){
if(block[i].accessed >block[pos].accessed)
pos = i;//找到应予置换页面,返回BLOCK中位置
return pos;
}
//这里需要返回值,没找到返回0
return 0;
}
void display( )
{ for(int i=0; i <Bsize; i++)
{ if(block[i].pagenum != -1)
{
printf(" %02d",block[i].pagenum);
}
}
cout < <endl;
}
void suijishu( )
{
int flag=0;
cin>>pc;
cout < <"******按照要求产生的320个随机数:*******" < <endl;
for(int i=0;i <320;i++)
{
temp[i]=pc;
if(flag%2==0) pc=++pc%320;
if(flag==1) pc=rand( )% (pc-1);
if(flag==3) pc=pc+1+(rand( )%(320-(pc+1)));
flag=++flag%4;
printf(" %03d",temp[i]);
if((i+1)%10==0) cout < <endl;
}
}
void pagestring( )
{
for(int i=0;i <320;i++)
{
printf(" %02d",temp[i]/10);
if((i+1)%10==0) cout < <endl;
}
}
void OPT( )
{ int exist,space,position ;
int curpage;
for(int i=0;i <320;i++)
{ if(i%100==0) getch( );
pc=temp[i];
curpage=pc/10;
exist = findExist(curpage);
if(exist==-1)
{ space = findSpace ( );
if(space != -1)
{ block[space].pagenum = curpage;
display( );
n=n+1;
}
else
{ for(int k=0;k <Bsize;k++)
{for(int j=i;j <320;j++)
{if(block[k].pagenum!= temp[j]/10)
{ block[k].accessed = 1000;
}//将来不会用,设置为一个很大数
else
{ block[k].accessed = j;
break;
}
}
}
position = findReplace( );
block[position].pagenum = curpage;
display( );
n++;
}
}
}
cout < <"缺页次数:" < < n < <endl;
cout < <"缺页率:" < <(n/320.0)*100 < <"%" < <endl;
}
void LRU( )
{ int exist,space,position ;
int curpage;
for(int i=0;i <320;i++)
{ if(i%100==0) getch( );
pc=temp[i];
curpage=pc/10;
exist = findExist(curpage);
if(exist==-1)
{ space = findSpace( );
if(space != -1)
{ block[space].pagenum = curpage;
display( );
n=n+1;
}
else
{ position = findReplace( );
block[position].pagenum = curpage;
display( );
n++;
}
}
else block[exist].accessed = -1;//恢复存在的并刚访问过的BLOCK中页面accessed为-1
for(int j=0; j <4; j++)
{
block[j].accessed++;
}
}
cout < <"缺页次数:" < <n < <endl;
cout < <"缺页率:" < <(n/320.0)*100 < <"%" < <endl;
}
void FIFO( )
{
int exist,space,position ;
int curpage;
for(int i=0;i <320;i++)
{
if(i%100==0) getch( );
pc=temp[i];
curpage=pc/10;
exist = findExist(curpage);
if(exist==-1)
{space = findSpace( );
if(space != -1)
{ block[space].pagenum = curpage;
display( );
n=n+1;
}
else
{ position = findReplace( );
block[position].pagenum = curpage;
display( );
n++;
block[position].accessed--;
}
}
for(int j=0; j <Bsize; j++)
block[j].accessed++;}
cout < <"缺页次数:" < <n < <endl;
cout < <"缺页率:" < <(n/320.0)*100 < <"%" < <endl;
}
void main( )
{
int select;
cout < <"请输入第一条指令号(0~320):";
suijishu( );
cout < <"*****对应的调用页面队列*******" < <endl;
pagestring( );
do
{ cout < <"****************************************" < <endl;
cout < <"------1:OPT 2:LRU 3:FIFO 4:退出-----" < <endl;
cout < <"****************************************" < <endl;
cout < <" 请选择一种页面置换算法:";
cin>>select;
cout < <"****************************************" < <endl;
init( );
switch(select)
{ case 1:cout < <"最佳置换算法OPT:" < <endl;
cout < <"*****************" < <endl;
OPT( );
break;
case 2:cout < <"最近最久未使用置换算法LRU:" < <endl;
cout < <"**************************" < <endl;
LRU( );
break;
case 3:cout < <"先进先出置换算法FIFO:" < <endl;
cout < <"*********************" < <endl;
FIFO( );
break;
default: ;
}
}while(select!=4);
}