帮忙解决下我粗糙版的银行家算法错误

fanghua08 fanghua08 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include<stdio.h>
int available[3]={10,5,7};
struct pcb /*进程动态需求表*/
{
int max[6][3],allocation[6][3],need[6][3];
}
int Init(struct pcb *p)/*T0时刻需求表*/
{
int i,j;
for(i=0;i<5;i++)
{
printf("请输入进程p[%d]需要的最大资源量:",i);
for(j=0;j<3;j++)
{
scanf("%d",&(p->max[i][j]));
if(p->max[i][j]>available[j]) return 0;
printf(" ");
}
printf("\n请输入进程p[%d]分配的资源量:",i);
for(j=0;j<3;j++)/*可以改成初始分配函数*/
{
scanf("%d",&(p->allocation[i][j]));
printf(" ");
}
for(j=0;j<3;j++)
{
p->need[i][j]=p->max[i][j]-p->allocation[i][j];
printf(" ");
}
}
return 1;
}
int request(struct pcb *p,int i)/*可以改成按照某种算法自动请求向量*/
{
int k,j,m,n;
printf("请输入%d号进程请求资源量:");
for(k=0;k<3;k++)
{
scanf("%d",&j);
if(j>p->need[i][k]||j>available[k])/*这里应该进行压栈,执行下个请求信号量*/
{
printf("错误");
return 0;
}
else
{
available[k]=available[k]-j;
p->allocation[i][k]+=j;
p->need[i][k]=p->need[i][k]-j;
}
printf(" ");
}
return 1;
}
int safe(struct pcb *p)
{
int flag[2]={1,0},work[3],finish[5]={0},i,j=0;
for(i=0;i<3;i++)
work[i]=available[i];
while(1)
{
if(finish[j]==1) j++;
for(i=0;i<3;i++)
if(p->max[j][i]<=work[i])
continue;
else
{flag[0]=0;break;}
if(flag[0]==1)
{
for(i=0;i<3;i++)
work[i]+=p->allocation[j][i];
finish[j]=1;
flag[1]=j;
}
j++;
if(j==5) j=0;
if(flag[0]==0&&flag[1]==j) return 0;
}
return 1;
}
int main()
{
int i,j,s[3];
struct pcb p;
for(i=0;i<3;i++)
s[i]=available[i];
Init(&p);
if(safe(&p)==0)
{
printf("错误");
return 0;
}
printf("请输入请求向量的进程:");
scanf("%d",&j);
i=request(&p,j);
if(safe(&p)==0)
{
for(i=0;i<3;i++)
available[i]=s[i];
return 0;
}
}
出现的错误是:
E:\学习\代码\银行家安全算法.cpp(7) : error C2628: 'pcb' followed by 'int' is illegal (did you forget a ';'?)
E:\学习\代码\银行家安全算法.cpp(16) : error C2440: 'return' : cannot convert from 'const int' to 'struct pcb'
No constructor could take the source type, or constructor overload resolution was ambiguous
E:\学习\代码\银行家安全算法.cpp(31) : error C2440: 'return' : cannot convert from 'const int' to 'struct pcb'
No constructor could take the source type, or constructor overload resolution was ambiguous
执行 cl.exe 时出错.

银行家安全算法.obj - 1 error(s), 0 warning(s)
...全文

相关推荐

银行家算法实验报告

银行家算法代码展示

weixin_39555874

【信息科学与工程学】计算机科学与自动化——第三十篇 系统工程03 IT系统评估:代数方法、规约技术、状态空间方法、死锁分析、共因模型

大型IT系统的评估需要综合运用代数方法、规约技术、状态空间分析和结构分析。层次化评估:从轻量级分析到深度分析逐步推进自适应方法选择:根据系统特征动态选择最合适的分析方法混合方法集成:结合多种方法的优势,避免单一方法的局限增量式分析:支持增量更新和持续分析不确定性管理:明确分析结果的置信度和局限性实际应用中,建议:对于超大型系统(>10^6状态),优先使用代数方法和结构分析对于高并发系统,优先使用偏序规约和符号方法对于安全性要求高的系统,采用形式化验证结合测试。

flyair_China

【信息科学与工程学】【数据科学】数据科学领域——第三篇 数学08 几何学07 网络几何01

编号类型领域问题问题的数学分析参数列表及参数的数值范围关联知识1组合优化 / 计算几何网络几何(几何图论):给定平面上的 n 个点(节点),求连接所有点的总边长最小的树。数学模型:设点集 P={p1​,…,pn​}⊂R2,边权为欧氏距离 d(pi​,pj​)=(xi​−xj​)2+(yi​−yj​)2​。目标是找到一棵生成树 T=(P,E)使得 ∑(i,j)∈E​d(pi​,pj​)最小。该问题是经典 MST 在欧氏度量下的特例,属于 NP-hard 吗?

flyair_China

【审计专栏】【法律领域】【社会科学】 第五十六篇 企业管理层互动形态分析01 AI分析

战略官试图塑造公司“战略现实”S_s(如“未来在于AI”),业务总裁固守“运营现实”S_o(如“现金为王”)。

flyair_China

操作系统 银行家算法详解

【计算机专业】操作系统 银行家算法详解

Henry LED
评论 8
收藏 已收藏
分享
返回顶部
fanghua08
C++ 语言 65,214 成员 250,514 内容