Salve!
Ho scritto questo programma, ma non funziona. In teoria è il dequeue che non va, ma non riesco a capirne il motivo... Me lo compila senza dare errori, ma poi se faccio dequeue e poi visualizzo, mi dà fuori sempre la stessa persona. Qualcuno gentilmente mi potrebbe aiutare? Grazie in anticipo:)
#include <iostream>
using namespace std;
struct paziente
{
string nome;
string cognome;
int eta;
};
const int MAX=100;
paziente coda[MAX];
int c=0;
bool full()
{return(c==MAX);}
bool empty()
{return(c=0);}
void enqueue(paziente dati)
{
if (full())
{
cout << "\nLa coda e' gia' piena\n";
}
else
{
coda[c].nome=dati.nome;
coda[c].cognome=dati.cognome;
coda[c].eta=dati.eta;
c++;
}
}
void dequeue()
{
if(empty())
{
cout << "\nLa coda e' gua' vuota\n";
}
else
{
for (int i=0; i<c; i++)
{
coda[i].nome=coda[i+1].nome;
coda[i].cognome=coda[1+i].cognome;
coda[i].eta=coda[i+1].eta;
}
c--;
}
}
void view()
{
cout<<"\n\tPaziente a cui tocca:\n>Nome:\t" << coda[0].nome << "\n>Cognome:\t"<<coda[0].cognome<<"\n>Eta'\t" << coda[0].eta<<endl;
}
int main()
{
paziente a;
int r;
do
{
cout << "\n::1::\tArrivo paziente nuovo (enqueue)";
cout << "\n::2::\tVisualizza dati paziente a cui tocca (view)";
cout << "\n::3::\tPaziente servito (dequeue)";
cout << "\n::4::\tEsci"<<endl;
cout << "\nDigitare la scelta: ";
cin>>r;
switch (r)
{case 1: cout << "\nNome: "; cin >> a.nome; cout << "\nCognome: "; cin >> a.cognome; cout << "\nEta': "; cin >> a.eta; enqueue(a); break;
case 2: view(); break;
case 3: dequeue(); break;}
}
while (r!=4);
system ("pause");
return 0;
}