Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84

    Esercizio sulle code - c++

    Salve a tutti,
    ho un problema con il seguente esercizio:
    Utilizzare l’ereditarietà per realizzare la classe CodaConGentleman che implementa una coda di persone in cui, ad ogni estrazione, se il prossimo da servire è un uomo, questo “fa il gentleman” e lascia passare tutte le donne in coda tra lui e l’uomo successivo. Si supponga che la classe persona abbia un metodo che consenta di distinguere il sesso. In particolare: (a) si implementi l’interfaccia della classe e i soli metodi di inserimento/estrazione. Note: Solo l’uomo in testa lascia passare le donne; è consentito l’uso di STL.
    Ho pensato di fare così:
    codice:
    #include "CodaConGentleman.h"  void CodaConGentleman::addPersona(Persona p) {    persone.push_back(p); }  void CodaConGentleman::controlla() { int cont=0;    cout<<"lista iniziale"<<endl;    stampa();    //do{    for(list<Persona>::iterator it=persone.begin();it!=persone.end();it++)       {       cout<<"nome soggetto esaminato"<<persone.front().getNome()<<" sesso "<<persone.front().getSesso()<<endl;       cont++;       if(persone.front().getSesso()==Femmina)       {          eliminaDonne();       }  } }   void CodaConGentleman::eliminaDonne() {        do{          if(persone.front().getSesso()==Femmina)          {             cout<<"elimino nome "<<persone.front().getNome()<<" sesso "<<persone.front().getSesso()<<endl;              persone.pop_front();           }          persone.front();          cout<<"lista dopo eliminazione"<<endl;             stampa();       } while(persone.front().getSesso() == Femmina);  }  void CodaConGentleman::stampa() {    for(list<Persona>::iterator it= persone.begin(); it!=persone.end(); it++)    {       cout<<(*it).getNome()<<" "<<(*it).getSesso()<<" "<<endl;     } }  void CodaConGentleman::estrai(Persona p) {  persone.pop_back();  return ; }
    Il problema è che appena trova il primo maschio continua a ciclare di continuo...Non capisco perchè il For non vada all'elemento successivo
    Grazie per l'attenzione

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84

    Esercizio sulle code c++

    Nessuno è in grado di rispondermi??????

  3. #3
    Uhm, puoi ri-postare il codice in modo che sia leggibile?
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    84
    Originariamente inviato da MItaly
    Uhm, puoi ri-postare il codice in modo che sia leggibile?
    codice:
    #include "CodaConGentleman.h"
    
    void CodaConGentleman::addPersona(Persona p)
    {
    	persone.push_back(p);
    }
    
    void CodaConGentleman::controlla()
    {
    	int cont=0;
    	cout<<"lista iniziale"<<endl;
    	stampa();
    	
    	for(list<Persona>::iterator it=persone.begin();it!=persone.end();it++)
    		{
    		cout<<"nome soggetto esaminato"<<persone.front().getNome()<<" sesso "<<persone.front().getSesso()<<endl;
    		cont++;
    		if(persone.front().getSesso()==Femmina)
    		{
    			eliminaDonne();
    		}
    
    		} 
    
    }
    
    void CodaConGentleman::eliminaDonne()
    {
    	int cont2=0;
    	do{
    			cont2++;
    			if(persone.front().getSesso()==Femmina)
    			{
    				cout<<"elimino nome "<<persone.front().getNome()<<" sesso "<<persone.front().getSesso()<<endl;
    
    				persone.pop_front();
    
    			}
    			persone.front();
    			cout<<"lista dopo eliminazione"<<endl;
    				stampa();
    		} while(persone.front().getSesso() == Femmina);
    
    }
    
    void CodaConGentleman::stampa()
    {
    	for(list<Persona>::iterator it= persone.begin(); it!=persone.end(); it++)
    	{
    		cout<<(*it).getNome()<<" "<<(*it).getSesso()<<" "<<endl;
    
    	}
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.