回 帖 发 新 帖 刷新版面

主题:银行家算法 我的代码怎么错了 高人给我指点一下

下面为寡人操作系统的实验作业——银行家算法的代码,出现了错误,望高手指点!!!!!!!!!!
#include<iostream>
using namespace std;

void main()
{int a[100][5];
 int i,j,k,t,p,m,n,s;
 printf("请问系统中有多少个进程:");
 scanf("%d",&i);
 printf("请输入进程P0的资源情况:\nMax:");
 scanf("%d",&a[0][1]);
 printf("Allocation:");
 scanf("%d",&a[0][2]);
 printf("Available:");
 scanf("%d",&a[0][4]);
 a[0][3]=a[0][1]-a[0][2];
 for(j=1;j<i;j++)
 {printf("请输入进程P%d的资源情况:\nMax:",j);
  scanf("%d",&a[j][1]);
  printf("Allocation:");
  scanf("%d",&a[j][2]);
  a[j][3]=a[j][1]-a[j][2];
 }

 a[0][0]=0;
 printf("\nNO.\tMax\tAllo\tNeed\tAvai\n");
 printf("P%d\t",a[0][0]);
 printf("%d\t",a[0][1]);
 printf("%d\t",a[0][2]);
 printf("%d\t",a[0][3]);
 printf("%d\n",a[0][4]);
 for(k=1;k<i;k++)
 {a[k][0]=k;
  printf("P%d\t",a[k][0]);
  printf("%d\t",a[k][1]);
  printf("%d\t",a[k][2]);
  printf("%d\n",a[k][3]);
 }

 k=0;
 for(t=0;t<i;t++)
 {if(a[t][3]<=a[k][4])
 { a[k][4]=a[k][4]+a[t][2];//应该就是这里错了,但是为什么?怎么改???
   p=a[t][0];m=a[t][1];n=a[t][2];s=a[t][3];
   a[t][0]=a[k][0];a[t][1]=a[k][1];a[t][2]=a[k][2];a[t][3]=a[k][3];
   a[k][0]=p;a[k][1]=m;a[k][2]=n;a[k][3]=s;
   printf("P%d\t%d\t%d\t%d\t%d\n",a[k][0],a[k][1],a[k][2],a[k][3],a[t][4]);
   k++;
 }
 }
 if(k==(i-1))
 {printf("\n系统安全!!!\n");
  printf("安全序列为:");
  for(k=0;k<i;k++)
  {printf("P%d ",a[k][0]);
  }
  printf("\n");
 }
 else printf("\n系统处在不安全状态!!!\n");
 
}
 
 
 
 
 
 
 
 
 

回复列表 (共1个回复)

沙发

#include<iostream>
using namespace std;

这个地方有问题
你不是C写的吗
怎么有iostream
这个是C++里面的啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册