初学者求帮助,求!关于银行家算法与动态资源分配的,异常不知道如何改

菜鸟求帮助,急求!!!关于银行家算法与动态资源分配的,错误不知道怎么改


用银行家算法实现资源分配。要求:
(1)设计一个3个并发进程共享10个同类资源的系统,进程可动态地申请资源和释放资源,系统按各进程的申请动态地分配资源。
(2) 设计用银行家算法和随机分配算法,实现资源分配的两个资源分配程序,应具有显示或打印各进程依次要求申请的资源数以及依次分配资源的情况。
(3) 确定一组各进程依次申请资源数的序列,在相同的情况下分别运行上述两种资源分配程序,观察运行结果。


#include <stdio.h>
#include <fstream.h>
#define countprocess 3
#define countresource 10
#define countresourcekind 3

typedef enum{Ready,Run,Blocked,Finish}STATUS;
typedef struct{
int processnumber;
STATUS status;
int Allocation[countresourcekind];
int Claim[countresourcekind];
int Need[countresourcekind];
}PCB;
PCB Process[countprocess];
int set;//全局变量
FILE *infile1,*infile2;
infile1=fopen("H:\\资源总数表.txt","rt");
infile2=fopen("H:\\资源请求表.txt","rt");
if(!infile1)
{
cout<<"资源总数表未成功打开!\n"<<endl;
  return 0;
}
cout<<"资源总数表**************\n"<<endl;
int availible[countresourcekind];
for(int i=0;i<countresourcekind;i++)

fscanf(infile1,"%d",&availible[i]);
cout<<availible[i]<<endl;
}
cout<<"\n"<<endl;
fclose(infile1);
if(!infile2)
{
cout<<"资源请求表未成功打开!\n"<<endl;
  return 0;
}
int resourcerequest[countprocess][countresourcekind];
cout<<"资源请求表**************\n"<<endl;
for(i=0;i<countprocess;i++)
{
for(j=0;j<countresourcekind;j++)
{
fscanf(infile2,"%d",&resourcerequest[i][j]);
cout<<resourcerequest[i][j]<<endl;
}
cout<<"\n"<<endl;
}
fclose(infile2);
 //声明函数
void InitProcess();
void bankermake();
void suijimake();
void Test();
void bijiao();


int main()
{
InitProcess();//初始化PCB
bankermake();
suijimake();
return 0;
}

void InitProcess()//初始化函数
{

for(int i=0;i<countprocess;i++)
{
process[i].processnumber=i+1;
process[i].status=Ready;
  for(int j=0;j<countresourcekind;j++)
{
process[i].Allocation[j]=0;
process[i].Claim[j]=resourcerequest[i][j];
  process[i].Need[j]=0;
}
   
}
}


int bankermake()//银行家算法
{
int i=0,j;
  FILE *infile3;
infile3=fopen("H:\\动态申请表.txt","rt");
if(!infile3)
{
cout<<"动态申请表未成功打开!"<<"\n"<<endl;
return 0;
}
fscanf(infile3,"%d",&set);
for(i=0;i<countresourcekind;i++)
{
fscanf(infile3,"%d",&process[set-1].Need[i]);
}
cout<<"\n"<<endl;
fclose(infile3);
  cout<<"进程%d依次请求各资源的个数为%d,%d,%d"<<set,process[set-1].Need[0],process[set-1].Need[1],process[set-1].Need[2]<<"\n"<<endl;


for(int i=0;i<countresourcekind;i++)//判断该请求是否满足小于最大请求数的原则,若满足,往下执行
{
if(process[set-1].Need[i]>process[set-1].Claim[i])
{  
cout<<"该请求不合法,请重新输入!"<<endl;
return 0;
}
}
for(i=0;i<countresourcekind;i++)//判断该请求是否满足小于当前系统可用资源的原则,若满足,往下执行
{
  if(process[set-1].Need[i]>process[set-1].availible[i])
{
cout<<"该请求不能立即被响应,请耐心等待!"<<endl;
  process[set-1].status=Blocked;
}
  for(i=0;i<countresourcekind;i++) //试分配
{
  process[set-1].Allocation[i]=process[set-1].Allocation[i]+process[set-1].Need[i];
  availible[i]=availible[i]-process[set-1].Need[i];
}

bool possible=true;//检测分配之后状态是否安全