⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 银行家.txt

📁 课程设计——小型商场代码
💻 TXT
字号:
#include "stdio.h"
#include "stdlib.h"


#define n 5
#define m 3


int main()
{
      int i,j;
      int flag=1;
   int request;
   int change=0;
      int k=0;   
      int count=0;   
      int available[m]={3,3,2}; /*初始资源分配状态*/
      int max[n][m]={7,5,3,3,2,2,9,0,2,2,2,2,4,3,3};
      int al本地[n][m]={0,1,0,2,0,0,3,0,2,2,1,1,0,0,2};
      int need[n][m];
      int work[m];


   printf("available:\n");   
   for(i=0;i<m;i++)
   {
    printf("  %d  ",available[i]);
   }
   printf("\n");
   printf("max:\n");


   for(i=0;i<n;i++)
   {
    printf("process %d:",i);
    for(j=0;j<m;j++)
    {
     printf("  %d"  ,max[i][j]);
    }
    printf("\n");
   }



      for (i=0;i<m;i++)
          work[i]=available[i];
      int finish[n];
      for (i=0;i<n;i++)
          finish[i]=0;          
      for(i=0;i<n;i++)      
          for(j=0;j<m;j++)
               need[i][j]=max[i][j]-al本地[i][j];
    


   printf("now need:\n");


   for(i=0;i<n;i++)
   {
    printf("process %d:",i);
    for(j=0;j<m;j++)
    {
     printf("  %d"  ,need[i][j]);
    }
    printf("\n");
   }



   printf("Do you want to change the need(1/0):"); 
      scanf("%d",&change);
      if(change==1)
   {
           printf("Enter process request:");
        scanf("%d",&request);
        printf("\nEnter request sources:");
        for(j=0;j<m;j++)
     {
        scanf("%d" ,&need[request][j]);
     }
              for(i=0;i<n;i++)      
                  for(j=0;j<m;j++)
                     max[i][j]=need[i][j]+al本地[i][j];
   }
   printf("\n");
   


   
      while(k<n)   
      {
      for(i=0;i<n;i++)
      {
          for(j=0;j<m;j++)
          {
               if(need[i][j]>work[j]) flag=0;
                              
          }
          
          if(finish[i]==0 && flag==1)
          {
               for(j=0;j<m;j++)
               {
                   work[j]+=al本地[i][j];
                   finish[i]=1;
                   
                   
               }
               printf("this is process %d\n",i);
      k++;
          }
          flag=1;
      }
      count++;
      if(count>=n) break;
      }
      flag=1; 
      for(i=0;i<n;i++)
      {
          if(finish[i]==0) flag=0; 
      }
      if(flag==1) printf("it is safe\n");
      else printf("unsafe\n");
      getchar();
} 








#include<stdio.h>
typedef struct
{
 int x;
 int requ[4];
}REQUEST;
void detect(int allocation[][4],int available[4],int need[][4]);
main()
{
 int i,j;
 int allocation[5][4]={{3,0,1,1},{0,1,0,0},{1,1,1,0},{1,1,0,1},{0,0,0,0}};
 int need[5][4]={{1,1,0,0},{0,1,1,2},{3,1,0,0},{0,0,1,0},{2,1,1,0}};
 int available[4]={1,0,2,0};
 REQUEST req;
 printf("please input the NO. of process: ");
 scanf("%d",&req.x);
 i=req.x;
 printf("please input the resouces of request:");
 scanf("%d,%d,%d,%d",&req.requ[0],&req.requ[1],&req.requ[2],&req.requ[3]);
 if(req.requ[0]<=need[i][0]
    &&req.requ[1]<=need[i][1]
    &&req.requ[2]<=need[i][2]
    &&req.requ[3]<=need[i][3])
 { if(req.requ[0]<=available[0]
  &&req.requ[1]<=available[1]
  &&req.requ[2]<=available[2]
  &&req.requ[3]<=available[3])
    {for(j=0;j<4;j++)
   { available[j]=available[j]-req.requ[j];
     allocation[i][j]=allocation[i][j]+req.requ[j];
     need[i][j]=need[i][j]-req.requ[j];
   }
 detect(allocation,available,need);
    }
    printf("there are not enough available resouces!");
    exit(1);
 }
 printf("The resouces of request have been beyond the max number needed!");
}
void detect(int allocation[][4],int available[4],int need[][4])
{
  int t,n,j,e;
  int work[4];
  int finish[5]={0,0,0,0,0};
  for(t=0;t<4;t++)
  work[t]=available[t];
  for(n=0;n<5;n++)
  { if(finish[n]==0
   &&need[n][0]<=work[0]
   &&need[n][1]<=work[1]
   &&need[n][2]<=work[2]
   &&need[n][3]<=work[3])
 {
   for(j=0;j<4;j++)
   work[j]=work[j]+allocation[n][j];
   finish[n]=1;
   n=-1;/*从0再次循环*/
 }
  }

  for(e=0;e<5;e++)
 {  if(finish[e]==1)
     ;
   else
    {for(e=0;e<5;e++)
     printf("%d",finish[e]);
     printf("the system is not safe!");
     exit(1);
  }
  }
   printf("the system is safe!");
   exit(1);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -