***I am posting this for the second time, because last time my issue was not resolved. There was no update in the code and it gave the same output as before. So please make sure to actually make corrections in the code I provided.***   The output of the following problem should be: P1 -> P3 -> P4 -> P5 -> P0 -> P2  but the output I get when I run my code is: P1 -> P3 -> P4 -> P5   Note: I am sharing my code below. Please tell me what to fix in my code to get the desired output. P   Problem: Write a c program that will generate the safe sequence of process execution for the situation given below:(Use Banker’s Algorithm). Note: The code can be implemented in several different ways, but make sure the parameter remains the same as shown below. n = 6; // Number of processes m = 4; // Number of resources int alloc[6][4] = { { 0, 1, 0, 3 }, // P0// Allocation Matrix { 2, 0, 0, 3 }, // P1 { 3, 0, 2, 0 }, // P2 { 2, 1, 1, 5 }, // P3 { 0, 0, 2, 2 }, // P4 {1, 2 , 3, 1 } }; //P5 int max[6][4] = { { 6, 4, 3, 4 }, // P0 // MAX Matrix { 3, 2, 2, 4 }, // P1 { 9, 1, 2, 6 }, // P2 { 2, 2, 2, 8 }, // P3 { 4, 3, 3, 7 }, // P4 { 6, 2, 6, 5 } }; //P5 int avail[4] = { 2, 2, 2, 1 }; //Available resources   My code:  #include int main() {          int n, m;     n = 6; // Number of processes     m = 4; // Number of resources          // Allocation Matrix     int allocation[6][4] =  { { 0, 1, 0, 3 }, // P0                             { 2, 0, 0, 3 }, // P1                             { 3, 0, 2, 0 }, // P2                             { 2, 1, 1, 5 }, // P3                             { 0, 0, 2, 2 }, // P4                             {1, 2 , 3, 1 } }; //P5                                  // MAX Matrix     int max[6][4] = { { 6, 4, 3, 4 }, // P0                      { 3, 2, 2, 4 }, // P1                     { 9, 1, 2, 6 }, // P2                     { 2, 2, 2, 8 }, // P3                     { 4, 3, 3, 7 }, // P4                     { 6, 2 , 6, 5 } }; //P5          //Available resources     int avail[4] = { 2, 2, 2, 1 };          //calculating Need Matrix     int need[n][m];          for(int i = 0; i < n; i++){         for(int j = 0; j < m; j++)             need[i][j] = max[i][j]-allocation[i][j];     }          //Banker's Algorithm     int k, flag;     k = 0; //the variable k is the index of the safe sequence array          int completion[20], safe_sequence[20]; /* The completion array stores the processes' completion status.                                         It will store value 0 for an incomplete process and 1 for a                                          complete process */                                              // Initally all processes are incomplete     for(int i = 0; i < n; i++) {         completion[i] = 0;     }          for(int i = 0; i < n; i++) {         flag = 0;         if(completion[i] == 0)          {             //Process is incomplete. So execute the Process             for(int j = 0; j < m; j++) {                 if(need[i][j] > avail[j]) //If need is greater than available break out of the loop                  {                     flag = 1;                     break;                 }             }             if(flag==0) // Need is less than available             {                 completion[i] = 1;                 safe_sequence[k] = i;                 k++;                 //Calculate new available                 for(int j = 0; j < m; j++)                 {                     avail[j] += allocation[i][j];                 }                 i = i - 1; //loop from the first process                              }         }     }                         printf("Safe Sequence:\n");     for(int i = 0; i < k; i++)     {         printf("P%d", safe_sequence[i]);         if(i < k-1)         {             printf(" -> ");         }              }     return 0;       }

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter11: Inheritance And Composition
Section: Chapter Questions
Problem 28SA
icon
Related questions
Question

***I am posting this for the second time, because last time my issue was not resolved. There was no update in the code and it gave the same output as before. So please make sure to actually make corrections in the code I provided.***

 

The output of the following problem should be: P1 -> P3 -> P4 -> P5 -> P0 -> P2 

but the output I get when I run my code is: P1 -> P3 -> P4 -> P5

 

Note: I am sharing my code below. Please tell me what to fix in my code to get the desired output. P

 

Problem:

Write a c program that will generate the safe sequence of process execution for the situation
given below:(Use Banker’s Algorithm).
Note: The code can be implemented in several different ways, but make sure the parameter
remains the same as shown below.
n = 6; // Number of processes
m = 4; // Number of resources
int alloc[6][4] = { { 0, 1, 0, 3 }, // P0// Allocation Matrix
{ 2, 0, 0, 3 }, // P1
{ 3, 0, 2, 0 }, // P2
{ 2, 1, 1, 5 }, // P3
{ 0, 0, 2, 2 }, // P4
{1, 2 , 3, 1 } }; //P5
int max[6][4] = { { 6, 4, 3, 4 }, // P0 // MAX Matrix
{ 3, 2, 2, 4 }, // P1
{ 9, 1, 2, 6 }, // P2
{ 2, 2, 2, 8 }, // P3
{ 4, 3, 3, 7 }, // P4
{ 6, 2, 6, 5 } }; //P5
int avail[4] = { 2, 2, 2, 1 }; //Available resources

 

My code: 

#include <stdio.h>

int main() {
    
    int n, m;
    n = 6; // Number of processes
    m = 4; // Number of resources
    
    // Allocation Matrix
    int allocation[6][4] =  { { 0, 1, 0, 3 }, // P0
                            { 2, 0, 0, 3 }, // P1
                            { 3, 0, 2, 0 }, // P2
                            { 2, 1, 1, 5 }, // P3
                            { 0, 0, 2, 2 }, // P4
                            {1, 2 , 3, 1 } }; //P5
                            
    // MAX Matrix
    int max[6][4] = { { 6, 4, 3, 4 }, // P0 
                    { 3, 2, 2, 4 }, // P1
                    { 9, 1, 2, 6 }, // P2
                    { 2, 2, 2, 8 }, // P3
                    { 4, 3, 3, 7 }, // P4
                    { 6, 2 , 6, 5 } }; //P5
    
    //Available resources
    int avail[4] = { 2, 2, 2, 1 };
    
    //calculating Need Matrix
    int need[n][m];
    
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++)
            need[i][j] = max[i][j]-allocation[i][j];
    }
    
    //Banker's Algorithm
    int k, flag;
    k = 0; //the variable k is the index of the safe sequence array
    
    int completion[20], safe_sequence[20]; /* The completion array stores the processes' completion status.
                                        It will store value 0 for an incomplete process and 1 for a 
                                        complete process */
                                        
    // Initally all processes are incomplete
    for(int i = 0; i < n; i++) {
        completion[i] = 0;
    }
    
    for(int i = 0; i < n; i++) {
        flag = 0;
        if(completion[i] == 0) 
        {
            //Process is incomplete. So execute the Process
            for(int j = 0; j < m; j++) {
                if(need[i][j] > avail[j]) //If need is greater than available break out of the loop 
                {
                    flag = 1;
                    break;
                }
            }
            if(flag==0) // Need is less than available
            {
                completion[i] = 1;
                safe_sequence[k] = i;
                k++;
                //Calculate new available
                for(int j = 0; j < m; j++)
                {
                    avail[j] += allocation[i][j];
                }
                i = i - 1; //loop from the first process
                
            }
        }
    }
     
    
    
   
    printf("Safe Sequence:\n");
    for(int i = 0; i < k; i++)
    {
        printf("P%d", safe_sequence[i]);
        if(i < k-1)
        {
            printf(" -> ");
        }
        
    }
    return 0; 
    
}

Expert Solution
steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Basics of loop
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning