nella funzione visual_fila oltre a tenere aggiornata la fila e a visualizzarla sotto il menu deve anche eliminare dalla fila gli elementi che sono stati serviti, funziona per il primo, ma per il secondo no, e la fila non si aggiorna subito appena si finisce di servire uno... perchè ancora non l'ho capito.codice:#include <stdafx.h> #include <ctime> #include <iostream> #include <cstdlib> #include <conio.h> #include <cmath> using namespace std; struct utente //struttura di ogni utente { int orette;//il tempo di arrivo int minutini; //il tempo di arrivo int minuti; // il tempo che ci vuole a servire utente * info; // parte informativa }; void orologio (time_t &, int &, int &, utente *&); // clock del programma void aggiunta_nodo (utente *&, utente *&, bool &);// aggiunta nuovo nodo void visual_fila(utente *, int, int);// visualizzazione della gente in fila int main() { time_t tempo; tempo=time(NULL); // presa del tempo iniziale int minute=0; // minuti int hour=7; // ore utente* testa=NULL; // puntatore di testa utente* ptr;//nodo di coda bool stato=0; //0 vuota ; 1 non vuota cout<<hour<<":"<<minute;//visualizzazzione del primo orologio //menu cout<<" _-:()===<([Menu Informativo])>===():-_"<<endl<<endl; cout<<"_-:(1)==========<([Aggiunta Nuovo utente in coda])>==========(1):-_"<<endl; cout<<"_-:(2)===<([Calcolo tempo per tutti gli utenti in coda])>===(2):-_"<<endl; cout<<"_-:(3)=========<([Calcolo orario di fine servizio])>=========(3):-_"<<endl; cout<<"_-:(4)=======<([Calcolo numero di utenti accettabili])>======(4):-_"<<endl; visual_fila(testa,minute,hour); char k; do { orologio(tempo, minute, hour, testa); if(kbhit())//kbhit rileva se viene premuto un tasto da tastiera { k=getch();//preleva il codice direttamente dal buffer di input switch(k) { case '1': { cout<<endl<<endl<<"Nuovo utente aggiunto alla fila alle ore: "<<hour<<":"<<minute<<endl; aggiunta_nodo(testa, ptr ,stato); ptr->minutini=minute; ptr->orette=hour; system("cls"); cout<<hour<<":"<<minute; cout<<" _-:()===<([Menu Informativo])>===():-_"<<endl<<endl; cout<<"_-:(1)==========<([Aggiunta Nuovo utente in coda])>==========(1):-_"<<endl; cout<<"_-:(2)===<([Calcolo tempo per tutti gli utenti in coda])>===(2):-_"<<endl; cout<<"_-:(3)=========<([Calcolo orario di fine servizio])>=========(3):-_"<<endl; cout<<"_-:(4)=======<([Calcolo numero di utenti accettabili])>======(4):-_"<<endl; visual_fila(testa,minute,hour); }break; } } }while(hour!=10); return 0; } void orologio (time_t & tempo, int & minute, int & hour, utente * & head) { time_t trascorso; trascorso=time(NULL); if(trascorso-tempo==60) { minute++; tempo=time(NULL); if(minute==60) { hour++; } system("cls"); //Menu aggiornato cout<<hour<<":"<<minute; cout<<" _-:()===<([Menu Informativo])>===():-_"<<endl<<endl; cout<<"_-:(1)==========<([Aggiunta Nuovo utente in coda])>==========(1):-_"<<endl; cout<<"_-:(2)===<([Calcolo tempo per tutti gli utenti in coda])>===(2):-_"<<endl; cout<<"_-:(3)=========<([Calcolo orario di fine servizio])>=========(3):-_"<<endl; cout<<"_-:(4)=======<([Calcolo numero di utenti accettabili])>======(4):-_"<<endl; visual_fila(head, minute, hour); } } void visual_fila(utente * head, int minute, int hour) { utente * ptr; ptr=head; cout<<endl<<endl<<endl<<"No || orario d'arrivo || orario di fine lavoro"<<endl<<endl; if(ptr==NULL) { cout<<"Fila Vuota..."<<endl; } else { int temporum=0;//una specie di offset serve ad aggiungere i minuti di lavoro del precedente al successivo in fila int gente=1;// numeri di persone in fila int minuti_max; int ore_max=hour; do { cout<<gente<<" "<<ptr->orette<<":"<<ptr->minutini<<" ";// visualizzazione orario arrivo if(ptr->minuti+ptr->minutini+temporum>59) { ore_max++; minuti_max=abs((ptr->minuti-(ptr->minutini+temporum))); gente++; cout<<ore_max<<":"<<minuti_max; temporum+=ptr->minuti; if(ore_max==hour && minuti_max== minute)//aggiornamento fila { temporum-=ptr->minuti; head=ptr->info; delete(ptr); } } else { gente++; cout<<ore_max<<":"<<ptr->minuti+ptr->minutini+temporum; temporum+=ptr->minuti; if(minute==ptr->minuti+ptr->minutini+temporum)//aggiornamento fila { temporum-=ptr->minuti; head=ptr->info; delete(ptr); } } if(temporum>59) { temporum=0; } cout<<endl; ptr=ptr->info; }while(ptr!=NULL); } } void aggiunta_nodo(utente * & nodo, utente * & ptr, bool & stato) { if(stato==0) { cout<<"Aggiunta nuovo utente in fila..."<<endl<<endl; stato=1; nodo= new utente; nodo->info=NULL; ptr=nodo; do { cout<<"Quanti minuti servono per finire il lavoro?(da 5 a 30 minuti)"<<endl; cin>>nodo->minuti; }while(nodo->minuti<1 || nodo->minuti>30);//ricordiamo di rimetterlo a 5 } else { utente * temp=new utente; ptr->info=temp; ptr=temp; ptr->info=NULL; do { cout<<"Quanti minuti servono per finire il lavoro?(da 5 a 30 minuti)"<<endl; cin>>ptr->minuti; }while(nodo->minuti<1 || nodo->minuti>30);//ricordiamoci di rimetterlo a 5 } }