操作系统课的实验(银里手算法)#include"malloc.h"  #include"stdio.h"  #include"stdlib.h"  #definealloclensizeof(structallocation)  #definemaxlensizeof(structmax)  #defineavalensizeof(structavailable)  #defineneedlensizeof(structneed)  #definefinilensizeof(structfinish)  #definepathlensizeof(structpath)  structallocation  {  intvalue;  structallocation*next;  };  structmax  {  intvalue;  structmax*next;  };  structavailable/*可用资源数*/  {  intvalue;  structavailable*next;  };  structneed/*需求资源数*/  {  intvalue;  structneed*next;  };  structpath  {  intvalue;  structpath*next;  };  structfinish  {  intstat;  structfinish*next;  };  intmain()  {  introw,colum,status=0,i,j,t,temp,processtest;  structallocation*allochead,*alloc1,*alloc2,*alloctemp;  structmax*maxhead,*maxium1,*maxium2,*maxtemp;  structavailable*avahead,*available1,*available2,*workhead,*work1,*work2,*worktemp,*worktemp1;  structneed*needhead,*need1,*need2,*needtemp;  structfinish*finihead,*finish1,*finish2,*finishtemp;  structpath*pathhead,*path1,*path2;  printf("\n请输入系统资源的种类数:");  scanf("%d",&colum);  printf("请输入现时内存中的进程数:");  scanf("%d",&row);  printf("请输入已分配资源矩阵:\n");  for(i=0;inext=alloc2->next=NULL;  scanf("%d",&allochead->value);  status++;  }  else  {  alloc2=(structallocation*)malloc(alloclen);  scanf("%d,%d",&alloc2->value);  if(status==1)  {  allochead->next=alloc2;  status++;  }  alloc1->next=alloc2;  alloc1=alloc2;  }  }  }  alloc2->next=NULL;  status=0;  printf("请输入最大需求矩阵:\n");  for(i=0;inext=maxium2->next=NULL;  scanf("%d",&maxium1->value);  status++;  }  else  {  maxium2=(structmax*)malloc(maxlen);  scanf("%d,%d",&maxium2->value);  if(status==1)  {  maxhead->next=maxium2;  status++;  }  maxium1->next=maxium2;  maxium1=maxium2;  }  }  }  maxium2->next=NULL;  status=0;  printf("请输入现时系统剩余的资源矩阵:\n");  for(j=0;jnext=available2->next=NULL;  work1->next=work2->next=NULL;  scanf("%d",&available1->value);  work1->value=available1->value;  status++;  }  else  {  available2=(structavailable*)malloc(avalen);  work2=(structavailable*)malloc(avalen);  scanf("%d,%d",&available2->value);  work2->value=available2->value;  if(status==1)  {  avahead->next=available2;  workhead->next=work2;  status++;  }  available1->next=available2;  available1=available2;  work1->next=work2;  work1=work2;  }  }  available2->next=NULL;  work2->next=NULL;  status=0;  alloctemp=allochead;  maxtemp=maxhead;  for(i=0;inext=need2->next=NULL;  need1->value=maxtemp->value-alloctemp->value;  status++;  }  else  {  need2=(structneed*)malloc(needlen);  need2->value=(maxtemp->value)-(alloctemp->value);  if(status==1)  {  needhead->next=need2;  status++;  }  need1->next=need2;  need1=need2;  }  maxtemp=maxtemp->next;  alloctemp=alloctemp->next;  }  need2->next=NULL;  status=0;  for(i=0;inext=finish2->next=NULL;  finish1->stat=0;  status++;  }  else  {  finish2=(structfinish*)malloc(finilen);  finish2->stat=0;  if(status==1)  {  finihead->next=finish2;  status++;  }  finish1->next=finish2;  finish1=finish2;  }  }  finish2->next=NULL;/*Initializationcompleated*/  status=0;  processtest=0;  for(temp=0;tempstat==0)  {  for(j=0;jnext,worktemp=worktemp->next)  if(needtemp->valuevalue)  processtest++;  if(processtest==colum)  {  for(j=0;jvalue+=alloctemp->value;  worktemp1=worktemp1->next;  alloctemp=alloctemp->next;  }  if(status==0)  {  pathhead=path1=path2=(structpath*)malloc(pathlen);  path1->next=path2->next=NULL;  path1->value=i;  status++;  }  else  {  path2=(structpath*)malloc(pathlen);  path2->value=i;  if(status==1)  {  pathhead->next=path2;  status++;  }  path1->next=path2;  path1=path2;  }  finishtemp->stat=1;  }  else  {  for(t=0;tnext;  finishtemp->stat=0;  }  }  else  for(t=0;tnext;  alloctemp=alloctemp->next;  }  processtest=0;  worktemp=workhead;  finishtemp=finishtemp->next;  }  }  path2->next=NULL;  finishtemp=finihead;  for(temp=0;tempstat==0)  {  printf("\n系统处于非安全状态!\n");  exit(0);  }  finishtemp=finishtemp->next;  }  printf("\n系统处于安全状态.\n");  printf("\n安全序列为:\n");  do  {  printf("p%d",pathhead->value);  }  while(pathhead=pathhead->next);  printf("\n");  return0;  }#include"string.h"#include#include#defineM5#defineN3#defineFALSE0#defineTRUE1/*M个进程对N类资源最大资源需求量*/intMAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*系统可用资源数*/intAVAILABLE[N]={10,5,7};/*M个进程对N类资源最大资源需求量*/intALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};/*M个进程已经得到N类资源的资源量*/intNEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};/*M个进程还需要N类资源的资源量*/intRequest[N]={0,0,0};voidmain(){inti=0,j=0;charflag='Y';voidshowdata();voidchangdata(int);voidrstordata(int);intchkerr(int);showdata();while(flag=='Y'||flag=='y'){i=-1;while(i=M){printf("请输入需申请资源的进程号(从0到");printf("%d",M-1);printf(",否则重输入!):");scanf("%d",&i);if(i=M)printf("输入的进程号不存在,重新输入!\n");}printf("请输入进程");printf("%d",i);printf("申请的资源数\n");for(j=0;jNEED[i][j]){printf("进程");printf("%d",i);printf("申请的资源数大于进程");printf("%d",i);printf("还需要");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");/*printf("申请不合理,出错!请重新选择!\n");*/flag='N';break;}else{if(Request[j]>AVAILABLE[j]){printf("进程");printf("%d",i);printf("申请的资源数大于系统可用");printf("%d",j);printf("类资源的资源量!申请不合理,出错!请重新选择!\n");/*printf("申请不合理,出错!请重新选择!\n");*/flag='N';break;}}}if(flag=='Y'||flag=='y'){changdata(i);if(chkerr(i)){rstordata(i);showdata();}elseshowdata();}elseshowdata();printf("\n");printf("是否继续银里手算法演示,按'Y'或'y'键继续,按'N'或'n'键退出演示:");scanf("%c",&flag);}}voidshowdata(){inti,j;printf("系统可用的资源数为:\n");printf("");for(j=0;j");}printf("\n");return0;}
2015/11/20 3:54:43 883KB 算法 银行家
1
可以实现的功能1.根据默认路径在treeview中遍历文件夹和文件,若选择图片文件,则可以显示出图像信息。
2.支持热插拔,识别串口信息,并且在串口中显示COM口。
3.连接COM口后可以向stm32中发送图片的RGB像素信息。
以实如今STM32上面的刷图。
4.int文件用来储存你的默认路径,方便设置默认路径。
5.包含安装卸载项目代码。
2018/9/12 10:11:54 23.48MB c# 串口
1
内容描述:当按下INT按钮时,数码管开始快速计时,高五位为秒数,低三位为ms数,每1ms刷新一次显示内容。
当再次按下INT按钮时,中止计数。
并要求当开始计时时,每过一秒要有一次蜂鸣,蜂鸣时间为200ms。
开发环境为keil
2017/3/25 13:35:58 10KB 51 单片机 秒表 定时器
1
设计思想(1)程序主体结构部分:说明部分%%规则部分%%辅助程序部分(2)主体结构的说明在这里说明部分告诉我们使用的LETTER,DIGIT,IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward,references).这些代码应该再标记"%{"和"%}"之间;规则部分>可以包括任何你想用来分析的代码;我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能.(3)实现原理程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码方式的编码,用以区分之。
PL/0语言的EBNF表示::==;::=={|};::=+|-::=*|/::==|#|=::=a|b|…|X|Y|Z::=0|1|2|…|8|9三:设计过程1.关键字:void,main,if,then,break,int,Char,float,include,for,while,printfscanf并为小写。
2."+”;”-”;”*”;”/”;”:=“;”:”;”=“;”“;”=“;”(“;”)”;”;”;”#”为运算符。
3.其他标记如字符串,表示以字母开头的标识符。
4.空格符跳过。
5.各符号对应种别码关键字分别对应1-13运算符分别对应401-418,501-513。
字符串对应100常量对应200结束符#四:举例说明目标:实现对常量的判别代码:digit[0-9]letter[A-Za-z]other_char[!-@\[-~]id({letter}|[_])({letter}|{digit}|[_])*string{({letter}|{digit}|{other_char})+}int_num{digit}+%%[|\t|\n]+"auto"|"double"|"int"|"struct"|"break"|"else"|"long"|"switch"|"case"|"enum"|"register"|"typedef"|"char"|"extern"|"return"|"union"|"const"|"float"|"short"|"unsigned"|"continue"|"for"|"signed"|"void"|"default"|"goto"|"sizeof"|"do"|"if"|"static"|"while"|"main"{Upper(yytext,yyleng);printf("%s,NULL\n",yytext);}\"([!-~])*\"{printf("CONST_string,%s\n",yytext);}-?{int_num}[.]{int_num}?([E][+|-]?{int_num})?{printf("CONST_real,%s\n",yytext);}"0x"?{int_num}{printf("CONST_int,%s\n",yytext);}","|";"|"("|")"|"{"|"}"|"["|"]"|"->"|"."|"!"|"~"|"++"|"--"|"*"|"&"|"sizeof"|"/"|"%"|"+"|"-"|">"|"="|">="|"<<="|"&="|"^="|"|="|"="{printf("%s,NULL\n",yytext);}{id}{printf("ID,%s\n",yytext);}{digit}({letter})+{printf("error1:%s\n",yytext);}%%#includeUpper(char*s,intl){inti;for(i=0;i<l;i++){s[i]=toupper(s[i])
2021/11/7 5:50:07 105KB 词法分析器制作
1
功能和界面比较简单的一个管理系统。
(1)数据库管理系统选用MySQL5.5。
(2)数据库访问方式选用数据源JDBC。
(3)系统开发语言选择Java。
(4)系统界面swing。
(5)开发环境eclipse药品由专门的采购人员从医药经销商处购进医药超市,并将药品信息记录入库,顾客从超市购买药品需填写相关个人信息,每次售药需登记经办人(医药超市员工,即销售人员)的信息,以及所售药品的信息。
简化的系统数据库(MediDB)中次要包含以下三个数据表(设计时可根据实际业务需要适当追加其它的数据表),各表及其相应字段分别描述如下:1.顾客信息表(client)编号cno:char(10)姓名cname:nvarchar(8)性别csex:nchar(1)男 或 女年龄cage:int(4)住址caddress:nvarchar(50)电话cphone:nvarchar(20)症状csymptom:nvarchar(50)已购药品mno:char(12)经办人ano:char(8)录入日期cdate:datetime(8)备注cremark:nvarchar(50)2.经办人信息表(agency)编号ano:char(8)姓名aname:char(8)性别asex:nchar(1)男 或 女电话aphone:char(12)备注aremark:varchar(50)3.药品信息表(medicine)编号mno:char(12)名称mname:nvarchar(50)服用方法mmode:nchar(2)内服 或 外用功效mefficacy:nvarchar(50)
1
闲来无事本人随便写了一个俄罗斯方块。
整个地图用21个int整数来实现,每个方块由四个int来构成。
通过整数的移位、位与、位或运算来实现方块的移动、判断等。
2020/8/19 8:41:47 8KB QT 俄罗斯方块 游戏
1
ARDUINOgm65扫码模块+string强转int举行大小比较
2021/4/25 23:15:27 523B gm65 arduino
1
高功能的内存加密类库,主要可用于各种游戏的内存加密,防止用户修改游戏数据从而影响游戏的平衡性。
可用于Unity游戏项目,集成简单,使用方便。
集成后基本无需修改原来的代码逻辑,仅需要将变量声明中的int改为EncryptInt,float改为EncryptFloat……,支持int,float,double,long四种基本数据类型的内存加密。
可靠性很高,功能也很高,不影响游戏品质。
发现内存被修改后抛出MemoryCheatException异常,可捕获该异常,并提交服务器,服务端对用户进行封号等惩罚(网游类型)。
2015/7/7 14:18:22 3KB 内存加密
1
1.【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例:_name/__name/$Object/name_/name$/Object$2.【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。
注意,即使纯拼音命名方式也要避免采用。
反例:DaZhePromotion[打折]/getPingfenByName()[评分]/int变量=3;正例:ali/alibaba/taobao/cainiao/aliyun/youku/hangzhou等国际通用的名称,可视为英文。
3.【强制】类名使用UpperCamelCase风格,必须遵从驼峰方式,但以下情形例外:(领域模型的相关命名)DO/DTO/VO/DAO等。
正例:MarcoPolo/UserDO/XmlService/TcpUdpDeal/TaPromotion反例:macroPolo/UserDo/XMLService/TCPUDPDeal/TAPromotion...
2015/8/9 15:23:27 230KB 阿里 java 编程规范 开发规范
1
108题中有部分题目重合,因此么有收录在压缩文件中。
华为机试├─001字符串最后一个单词长度│└─Source├─002计算字符个数│└─Source├─003明明的随机数│└─Source├─004字符串分隔│└─Source├─005进制转换│└─Source├─006质数因子│└─Source├─007取近似值│└─Source├─008合并表记录│└─Source├─009提取不重复的整数│└─Source├─010字符个数统计│└─Source├─011数字颠倒│└─Source├─012字符串反转│└─Source├─013句子逆序│└─Source├─014字典序排序│└─Source├─015求int型正整数在内存中存储是1的个数│└─Source├─016购物单│├─Debug│├─Source││└─Debug│├─Source-时间优先││└─Debug│└─Source-空间优先│├─Debug│└─Release├─017坐标移动├─018识别IP地址分类统计│└─Source│└─Debug├─019错误记录├─020密码验证合格程序├─021密码破解├─023删除字符串中出现次数最少字符│└─Source│└─Debug├─024合唱队│└─Source│├─Debug│└─Release├─025数据分类处理│└─Source│└─Debug├─026查找兄弟单词│└─Source│└─Debug├─027素数伴侣│└─Source│└─Debug├─028字符串合并处理│└─Source│└─Debug├─030密码截取(查找最长回文字符串)├─031蛇形矩阵│└─Source│└─Debug├─033判断IP能否属于同一子网│└─Source│└─Debug├─034称砝码│└─Source│└─Debug├─035学英语│└─Source│└─Debug├─036迷宫问题│└─Source│└─Debug├─037数独问题│└─Debug├─038名字漂亮度│└─Source│└─Debug├─039字符串截取│└─Source│└─Debug├─040单链表删除数据│└─Source│└─Debug├─041多线程│└─Source│├─Backup│├─Debug││└─041.tlog│└─Release│└─041.tlog├─042表达式计算│└─Source│└─Debug├─043计算字符串距离│└─Source│└─Debug├─044杨辉三角形变形├─046挑7├─047完全数│└─Debug├─048高精度加法├─049输出n个数中最小的k个│└─Debug├─050找出字符串只出现一次的字符│└─Debug├─051组成一个偶数最接近的2个质数│└─Debug├─052M个苹果放入N个盘子├─053查找整数二进制中1的个数├─054DNA子串├─055MP3光标位置│└─Source│└─Debug├─056查找2个字符串最大相同子串│└─Debug├─057配置文件恢复│└─Source│└─Debug├─05824点计算│└─Debug├─059成绩排序├─060矩阵相乘├─061矩阵乘法次数计算├─062字符串通配符│└─Debug├─066命令行解析│└─Source│└─Debug├─067最大相同子串长度│└─Debug├─068火车编号进站│└─Debug├─072数组合并├─074埃及分数│└─Source│└─Debug├─076密码截取│└─Sourc
2018/6/8 16:28:18 4.55MB 机试 在线编程 华为机试
1
共 135 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡