L ho praticamente risolto,ho ricominciato da capo..L unica cosa e la carta d imbarco che non stampa esattamente quando si fa il cambio reparto, e il ciclo che non si arresta appena i 2 contatori sono a 5,ma si aspetta l altra iterazione,ma in linea di massima direi che va bene.Che ne dite?
#include<iostream>
using namespace std;
const int dim = 10;
bool libero(int aereo[],int l,int m)
{
for(int i = l;i < m; i++)
if(aereo[i] == 0)
return true;
return false;
}
void DaiPosto(int aereo[],int l,int m)
{
bool occupato = false;
for(int i = l;i < m; i++)
{
if(aereo[i] == 0 && !occupato)
{
aereo[i] = 1;
occupato = true;
}
}
}
int main()
{
int aereo[dim] = {0,0,0,0,0,0,0,0,0,0};
int contaFumatori = 0;
int contaNonFumatori = 0;
while(contaFumatori <= dim/2 && contaNonFumatori <= dim/2)
{
for(int i = 0; i < dim; i++) /// STAMPA
cout << aereo[i] << " ";//// ARRAY PER PROVA
cout << endl;
cout << "domanda" << endl;
int risposta;
cin >> risposta;
if(risposta == 1)
{
if(libero(aereo,0,dim/2))
{
DaiPosto(aereo,0,dim/2);
contaFumatori++;
cout << "Reparto fumatori,posto " << contaFumatori << endl;
}
else if(!libero(aereo,0,dim/2))
{
cout << "Vuoi posto in NON fumatori?" << endl;
char risposta;
cin >> risposta;
if(risposta == 'N')
{
cout << "Prossimo volo parte tra 3 ore" << endl;
return 0;
}
else if(risposta == 'S')
{
if(libero(aereo,dim/2,dim))
{
DaiPosto(aereo,dim/2,dim);
}
else
{
cout << "Reparto gia pieno.";
return 0;
}
}
}
}
if(risposta == 2)
{
if(libero(aereo,dim/2,dim))
{
DaiPosto(aereo,dim/2,dim);
contaNonFumatori++;
cout << "Reparto non fumatori,posto " << contaNonFumatori << endl;
}
else if(!libero(aereo,dim/2,dim))
{
cout << "Vuoi posto in reparto fumatori?" << endl;
char risposta;
cin >> risposta;
if(risposta == 'N')
{
cout << "Prossimo volo parte tra 3 ore" << endl;
return 0;
}
else if(risposta == 'S')
{
if(libero(aereo,0,dim/2))
{
DaiPosto(aereo,0,dim/2);
}
else
{
cout << "Reparto gia pieno.";
return 0;
}
}
}
}
}
return 0;
}