急。。。。。C语言程序 用Dev-C++ 编译 报错。。谁能帮我改一下。正常运行就可以!

#include<stdio.h>
#include<time.h>
#include<time.h>
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<M;j++){
if(Simulate[i-1][j]==PageOrder[i]){//在前一次页面请求过程中寻找是否存在新的页面请求
f=true;}
}
return f;
}
int IsExitLRU(int i){//LRU算法中判断新的页面请求是否在内存中
int f=-1;
for(int j=0;j<M;j++){
if(Simulate[i-1][j]==PageOrder[i]){
f=j;
}
}return f;
}
int Compare(){//LRU算法找出内存中需要置换出来的页面
int p,q;
p=PageCount[0];
q=0;
for(int i=1;i<M;i++){
if(p<PageCount[i]){
p=PageCount[i];
q=i;
}
}return q;
}
void Init(){ //初始化页框
for(int k=0;k<MaxNum;k++){
int n=rand()%320;//随机数产生320次指令
PageOrder[k]=n/10;//根据指令产生320次页面请求
}
for(int i=0;i<MaxNum;i++){//初始化页面访问过程
for(int j=0;j<M;j++){
Simulate[i][j]=-1;
}
}
for(int q=0;q<M;q++){//初始化最久未使用数组
PageCount[q]=0;
}
}
void OutPut(){
int i,j;
printf("页面访问序列:/n");
for(j=0;j<MaxNum;j++)
{
printf("%d",PageOrder[j]);
}
printf("\n");
printf("页面访问过程(只显示前10个):");
for(i=0;i<10;i++){
for(j=0;j<M;j++){
if(Simulate[i][j]==-1)
printf(" ");
else
printf("%d",Simulate[i][j]);
}
printf("/n");
}
printf("缺页数= /n",LackNum);
printf("命中率= /n",PageRate);
printf("--------------------------------------------------------------/n");
}
void FIFO(){
int j,x=0,y=0;
LackNum=0,
Init();
for(j=0;j<M;j++){
for(int k=0;k<=j;k++)
{
if(j==k)
Simulate[j][k]=PageOrder[j];
else
Simulate[j][k]=Simulate[j-1][k];
}
LackNum++;
}
for(x=M;x<MaxNum;x++){
for(int t=0;t<M;t++){
Simulate[x][t]=Simulate[x-1][t];
}
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<M;j++){
for(int k=0;k<=j;k++)
{
PageCount[k]++;
if(j==k)
Simulate[j][k]=PageOrder[j];
else
Simulate[j][k]=Simulate[j-1][k];
}
LackNum++;
}
for(x=M;x<MaxNum;x++){
for(int t=0;t<M;t++){
Simulate[x][t]=Simulate[x-1][t];
}
int p=IsExitLRU(x);
if(p==-1){
int k;
k=Compare();
for(int w=0;w<M;w++)
{
if(w!=k)
PageCount[w]++;
else
PageCount[k]=1;
}
Simulate[x][k]=PageOrder[x];
LackNum++;
}
else{
for(int w=0;w<M;w++){
if(w!=p)
PageCount[w]++;
else
PageCount[p]=1;
}
}
}
PageRate=1-((float)LackNum/(float)MaxNum);
OutPut();
}
后续链接地址:http://zhidao.baidu.com/question/283941463.html

<1>
#define MaxNum 320;//指令数
#define M 5;//内存容量
这两家宏定义后面不要; 应去掉分号;
<2>
using namespace std; 这一句可以注释掉,vc++ 6.0对命名空间支持不好的。
<3>
还应包含头文件 #include <stdlib.h>
<4>
再写个main() 函数就可以了
<5> 换行是 \n ;而不是/n
<6>printf("缺页数= /n",LackNum);
printf("命中率= /n",PageRate); 这两句里应加 %d %f

修改后程序如下:(visual c++ 6.0 编译通过)

#include<stdio.h>
#include<time.h>
#include<time.h>

#include <stdlib.h>
//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<M;j++){
if(Simulate[i-1][j]==PageOrder[i]){//在前一次页面请求过程中寻找是否存在新的页面请求
f=true;}
}
return f;
}

int IsExitLRU(int i)
{//LRU算法中判断新的页面请求是否在内存中
int f=-1;
for(int j=0;j<M;j++){
if(Simulate[i-1][j]==PageOrder[i]){
f=j;
}
}return f;
}

int Compare()
{//LRU算法找出内存中需要置换出来的页面
int p,q;
p=PageCount[0];
q=0;
for(int i=1;i<M;i++){
if(p<PageCount[i]){
p=PageCount[i];
q=i;
}
}return q;
}
void Init()
{ //初始化页框
for(int k=0;k<MaxNum;k++){
int n=rand()%320;//随机数产生320次指令
PageOrder[k]=n/10;//根据指令产生320次页面请求
}
for(int i=0;i<MaxNum;i++){//初始化页面访问过程
for(int j=0;j<M;j++){
Simulate[i][j]=-1;
}
}
for(int q=0;q<M;q++){//初始化最久未使用数组
PageCount[q]=0;
}
}
void OutPut()
{
int i,j;
printf("页面访问序列:\n");
for(j=0;j<MaxNum;j++)
{
printf("%d ",PageOrder[j]);
}
printf("\n");
printf("页面访问过程(只显示前10个):");
for(i=0;i<10;i++){
for(j=0;j<M;j++){
if(Simulate[i][j]==-1)
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<M;j++){
for(int k=0;k<=j;k++)
{
if(j==k)
Simulate[j][k]=PageOrder[j];
else
Simulate[j][k]=Simulate[j-1][k];
}
LackNum++;
}
for(x=M;x<MaxNum;x++){
for(int t=0;t<M;t++){
Simulate[x][t]=Simulate[x-1][t];
}
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<M;j++){
for(int k=0;k<=j;k++)
{
PageCount[k]++;
if(j==k)
Simulate[j][k]=PageOrder[j];
else
Simulate[j][k]=Simulate[j-1][k];
}
LackNum++;
}
for(x=M;x<MaxNum;x++){
for(int t=0;t<M;t++){
Simulate[x][t]=Simulate[x-1][t];
}
int p=IsExitLRU(x);
if(p==-1){
int k;
k=Compare();
for(int w=0;w<M;w++)
{
if(w!=k)
PageCount[w]++;
else
PageCount[k]=1;
}
Simulate[x][k]=PageOrder[x];
LackNum++;
}
else{
for(int w=0;w<M;w++){
if(w!=p)
PageCount[w]++;
else
PageCount[p]=1;
}
}
}
PageRate=1-((float)LackNum/(float)MaxNum);
OutPut();
}

int main()
{
FIFO();
LRU();

return 0;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-25
报的什么错?追问

报200多处错误。不知道是不是因为编译工具的问题。这个应该是c++的程序,但是编译的时候连using namespace std; 都报错,可能是当成c程序编译了 编译工具是Dev-C++
报的错基本上都是 缺少这个“;” 或者什么地方不识别 之类的。程序本身应该没有错,如果能运行通,请把运行的工具发给我。要稍微轻量级的。。不要航母

相似回答