Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.5 kB
3
Indexable
#include <stdio.h>  
int main()  
{
    int n, m, i, j, k;  
    printf("Enter the Number of Processes : ");
    scanf("%d",&n);
    printf("Enter the Number of Resources : ");
    scanf("%d",&m);

    int alloc[n][m];
    int max[n][m];
    
    printf("\nEnter the Allocation Matrix : \n");
    for (i = 0; i < n; i++)  
    {  
        printf("PROCESS %d : \n",i);
        for (j = 0; j < m; j++)
        {
            scanf("%d",&alloc[i][j]);
        }
    }  
    printf("\nEnter the Max Matrix : \n");
    for (i = 0; i < n; i++)  
    {  
        printf("PROCESS %d : \n",i);
        for (j = 0; j < m; j++)
        {
            scanf("%d",&max[i][j]);
        }
    }  
  
    int avail[m];             // Available Resources
    printf("\nEnter Available Resources : \n");
    for (i = 0;i < m; i++)
        {
            printf("Resources %d - ",i+1);
            scanf("%d",&avail[i]);
        }
     
  
    int f[n], ans[n], ind = 0;  
    for (k = 0; k < n; k++)  
    {  
        f[k] = 0;  
    }  
    int need[n][m];  
    for (i = 0; i < n; i++)  
    {  
        for (j = 0; j < m; j++)  
            need[i][j] = max[i][j] - alloc[i][j];  
    }  

    printf("\nNEED MATRIX\n");
    for (i = 0; i < n; i++)  
    {  
        printf("\n");
        for (j = 0; j < m; j++)  
            printf("%d ",need[i][j]);
    }  
    int y = 0;  
    for (k = 0; k < 5; k++)  
    {  
        for (i = 0; i < n; i++)  
        {  
            if (f[i] == 0)  
            {  
                int flag = 0;  
                for (j = 0; j < m; j++)  
                {  
                    if (need[i][j] > avail[j])  
                    {  
                        flag = 1;  
                        break;  
                    }  
                }  
                if (flag == 0)  
                {  
                    ans[ind++] = i;  
                    for (y = 0; y < m; y++)  
                        avail[y] += alloc[i][y];  
                    f[i] = 1;  
                }  
            }  
        }  
    }  
    int flag = 1;  
    for (int i = 0; i < n; i++)  
    {  
        if (f[i] == 0)  
        {  
            flag = 0;  
            printf("\nThe following system is not safe");  
            break;  
        }  
    }  
    if (flag == 1)  
    {  
        printf("\n\nFollowing is the SAFE Sequence:\n");  
        for (i = 0; i < n - 1; i++)  
            printf(" P%d ->", ans[i]);  
        printf(" P%d\n", ans[n - 1]);  
    }  
    return (0);  
}