Problema coda

di il
3 risposte

Problema coda

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;
}

3 Risposte

  • Re: Problema coda

    Al momento sbagli la empty()
    
    bool empty()
    {return(c=0);} // return ( c == 0 ); 
    
  • Re: Problema coda

    shodan ha scritto:


    Al momento sbagli la empty()
    
    bool empty()
    {return(c=0);} // return ( c == 0 ); 
    
    Hai ragione, grazie. Ora riprovo.
  • Re: Problema coda

    Ora funziona, grazie mille, shodan
Devi accedere o registrarti per scrivere nel forum
3 risposte