Banker's Algorithm

C

c++

I wrote this code that should tell to the user who are the best
processes to release a unit of a resource using the banker's algorithm

#include<iostream>
#include<conio>
#include<stdio>
#include<stdlib>


void main()
{

const int max = 10; //max multiplicity
int i, j, z; //counters
int P, L, N; //P=
processes, L= FREE, N= maximum multiplity
int A[max], R[max], M[max]; //A= allocates, R=
request, M= maximum requests
int RS[max]; //RS= folowing request
int LS[max]; //free resurces after the i-
allocation
int CP[max]={0}; //CP= processes classification
int MAX[max];
int lim; //max limit

do
{
cout<<"\HOW MANY PROCESSES DO YOU WANT? ";
cin>>P;
}while(P>max);

cout<<"\nINSERT THE MULTEPLICITY OF THE RESOURCE: ";
cin>>N;

for(i=0;i<P;i++)
{
cout<<"\nHOW MANY UNIT HAS THE P"<<i<<" PROCESS? ";
cin>>A;
cout<<"\nHOW MANY UNIT REQUEST THE P"<<i<<" PROCESS? ";
cin>>R;
cout<<"\nWHAT IS THE MAX NUMBER OF UNITS OF THE P"<<i<<"
PROCESS? ";
cin>>M;
cout<<"\n\n";
}

L=N;
for(i=0; i<P; i++)
L-=A; //nuber of units still idle

for(i=0; i<P; i++)
{
if(R<=L) //is secure?
{
RS=M-A-R; //next request
LS=L-R; //idle resuorces after the allocation

}
else //isn't secure
{
LS=-1;
}
}


for(i=0; i<P; i++)
MAX=-1; //or 0???

z=0;
for(i=0; i<P; i++)
{
if(i==0)
{
for(j=0; j<P; j++)
{
if(LS[j]>=MAX[z])
{
MAX[z]=LS[j];
CP[z]=j;

lim=MAX[z];
}
}
}
else
{
for(j=0; j<P; j++)
{
if((LS[j]>=MAX[z])&&(LS[j]<lim))
{
MAX[z]=LS[j];
CP[z]=j;

lim=MAX[z];
}
}
}

z++;
}

for(i=0; i<P; i++)
{
if(LS!=-1)
cout<<"\nTHE PROCESS NUMBER "<<i<<" IS THE "<<CP<<"st
CHOICE\n";
else
cout<<"THE PROCESS NUMBER "<<i<<" IS NOT SECURE";
}


getch();
}

------------------

The program doesn't do what it shuld do: it doesn't putthe processes in
the right order.

I don't know how to wirte the piece of code that tell to the user that
the best choise is the precess that has the bigger value of LS[]

Could anyone tell me what I should write?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,563
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top