主题:银行家算法 我的代码怎么错了 高人给我指点一下
下面为寡人操作系统的实验作业——银行家算法的代码,出现了错误,望高手指点!!!!!!!!!!
#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");
}
#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");
}