Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C++] Passaggio puntatore tra funzioni

    Salve vorrei fare la stampa dei valori della lista...credo che la funzione stampasquadra vada bene però non so come passare il puntatore testa dalla funzione aggiuntaGiocatore a stampasquadra...

    codice:
    #include <iostream>
    
    using namespace std;
     struct giocatore
        {
            string nomegiocatore;
            string cognomegiocatore;
            int abilita;
            giocatore*nextgiocatore;
        };
    class squadra
    {
        public:
        squadra()
        {
            testa=NULL;
        }
        void assegnamentoNome();
        void assegnamentoNomeSponsor();
        void aggiuntaGiocatore();
        void stampasquadra();
        int scelta;
        private:
        string nomesquadra;
        string sponsor;
        giocatore*testa;
        string valore;
        char opzione;
    
    };
    void squadra::assegnamentoNome()
    {
        cout<<"Che nome vuoi dare alla tua squadra? "<<endl;
        cin>>nomesquadra;
    }
    void squadra::assegnamentoNomeSponsor()
    {
        cout<<"Qual è il tuo sponsor?"<<endl;
        cin>>sponsor;
    }
    void squadra::aggiuntaGiocatore()
    {
    do
    {
    
       giocatore*ptr=new giocatore;
       giocatore*temp=new giocatore;
       cout<<"Inserisci il nome del giocatore:"<<endl;
       cin>>ptr->nomegiocatore;
       cout<<"Inserisci il cognome del giocatore:"<<endl;
       cin>>ptr->cognomegiocatore;
       cout<<"Qual e l'abilità del tuo giocatore?"<<endl;
       cin>>ptr->abilita;
       ptr->nextgiocatore=NULL;
       if(testa==NULL)
       testa=ptr;
       else
       {
           temp=testa;
           testa=ptr;
           testa->nextgiocatore=temp;
       }
       cout<<"Vuoi inserire un nuovo giocatore?"<<endl;
       cin>>opzione;
    }while(opzione=='s');
    }
    void  squadra::stampasquadra()
    {
        do
        {
        cout<<testa->nextgiocatore->nomegiocatore<<endl;
        valore=testa->nextgiocatore->nomegiocatore;
        }while(valore==NULL);
    }
    
    
    int main()
    {
        do
        {
    
        squadra miasquadra;
        cout<<"Cosa desideri fare?"<<endl;
        cout<<"1)Inserisci il nome della squadra"<<endl;
        cout<<"2)Inserisci il nome dello sponsor"<<endl;
        cout<<"3)Inserisci un giocatore"<<endl;
        cout<<"4)Visualizza la squadra"<<endl;
        cin>>miasquadra.scelta;
        switch(miasquadra.scelta)
        {
            case 1:
                    miasquadra.assegnamentoNome();
                break;
            case 2:
                    miasquadra.assegnamentoNomeSponsor();
                break;
            case 3:
                    miasquadra.aggiuntaGiocatore();
                break;
            default:
                cout<<"Scelta sbagliata";
        }
        }while(true);
        return 0;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    non hai bisogno di "passare" la variabile testa alla funzione, in quanto è membro della classe.

    Se interpreto bene quello che vuoi fare prova così

    codice:
    void  squadra::stampasquadra()
    {
    
    	giocatore * player = testa ;
    
    	while ( player ) {
    
    		cout << player->nomegiocatore << endl;
    		player = player->nextgiocatore;
    
        }
    
    }

  3. #3
    ok compila! ma non mi stampa...aggiungo il giocatore con l'apposita funziona ma quando parte la funzione di stampa il programma si chiude...

    codice:
    #include <iostream>
    
    using namespace std;
     struct giocatore
        {
            string nomegiocatore;
            string cognomegiocatore;
            int abilita;
            giocatore*nextgiocatore;
        };
    class squadra
    {
        public:
        squadra()
        {
            testa=NULL;
        }
        void assegnamentoNome();
        void assegnamentoNomeSponsor();
        void aggiuntaGiocatore();
        void stampasquadra(giocatore*&testa);
        int scelta;
        private:
        string nomesquadra;
        string sponsor;
        giocatore*testa;
        string valore;
        char opzione;
    
    };
    void squadra::assegnamentoNome()
    {
        cout<<"Che nome vuoi dare alla tua squadra? "<<endl;
        cin>>nomesquadra;
    }
    void squadra::assegnamentoNomeSponsor()
    {
        cout<<"Qual è il tuo sponsor?"<<endl;
        cin>>sponsor;
    }
    void squadra::aggiuntaGiocatore()
    {
    do
    {
    
       giocatore*ptr=new giocatore;
       giocatore*temp=new giocatore;
       cout<<"Inserisci il nome del giocatore:"<<endl;
       cin>>ptr->nomegiocatore;
       cout<<"Inserisci il cognome del giocatore:"<<endl;
       cin>>ptr->cognomegiocatore;
       cout<<"Qual e l'abilità del tuo giocatore?"<<endl;
       cin>>ptr->abilita;
       ptr->nextgiocatore=NULL;
       if(testa==NULL)
       testa=ptr;
       else
       {
           temp=testa;
           testa=ptr;
           testa->nextgiocatore=temp;
       }
       cout<<"Vuoi inserire un nuovo giocatore?"<<endl;
       cin>>opzione;
    }while(opzione=='s');
    }
    void  squadra::stampasquadra(giocatore*&testa)
    {
        do
        {
        cout<<testa->nextgiocatore->nomegiocatore<<endl;
        }while(testa->nextgiocatore->nomegiocatore!="0");
    }
    
    
    int main()
    {
        do
        {
    
        squadra miasquadra;
        cout<<"Cosa desideri fare?"<<endl;
        cout<<"1)Inserisci il nome della squadra"<<endl;
        cout<<"2)Inserisci il nome dello sponsor"<<endl;
        cout<<"3)Inserisci un giocatore"<<endl;
        cout<<"4)Visualizza la squadra"<<endl;
        cin>>miasquadra.scelta;
        switch(miasquadra.scelta)
        {
            case 1:
                    miasquadra.assegnamentoNome();
                break;
            case 2:
                    miasquadra.assegnamentoNomeSponsor();
                break;
            case 3:
                    miasquadra.aggiuntaGiocatore();
                break;
            case 4:
                    miasquadra.stampasquadra();
                break;
    
            default:
                cout<<"Scelta sbagliata";
        }
        }while(true);
        return 0;
    }

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da jonnykaraoke
    ok compila! ma non mi stampa...aggiungo il giocatore con l'apposita funziona ma quando parte la funzione di stampa il programma si chiude...
    jonnykaraoke, se sei sempre giovannimarino come sembra, ti ricordo che non è ammesso avere più di un account utente attivo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    del primo account non ricordavo la password è ho acceduto con jonnykaraoke...su vuoi puoi eliminare giovannimarino...mi scuso del problema...da adesso accedo con jonnykaraoke

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    stampasquadra non deve avere argomenti.

    Prova ad inserirlo pari pari come te la ho postata.

    codice:
    void  squadra::stampasquadra()
    {
    
    	giocatore * player = testa ;
    
    	while ( player ) {
    
    		cout << player->nomegiocatore << endl;
    		player = player->nextgiocatore;
    
        }
    
    }
    Inoltre in

    void squadra::stampasquadra(giocatore*&testa)

    non capisco cosa vuoi fare , sicuro che il compilatore non ti dia errore ????

    ciao

    sergio[

  7. #7
    si scusa...ho incollato il codice vecchio....ho provato ma niente....

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    inizia a spostare nel main la dichiaraizione di miasquadra fuori dal loop

    codice:
    int main()
    {
    
        squadra miasquadra;
    
    	do {
    
    		cout<<"Cosa desideri fare?"<<endl;
    		cout<<"1)Inserisci il nome della squadra"<<endl;
    		cout<<"2)Inserisci il nome dello sponsor"<<endl;
    		cout<<"3)Inserisci un giocatore"<<endl;
    		cout<<"4)Visualizza la squadra"<<endl;
    		
    		cin>>miasquadra.scelta;
    
    		switch(miasquadra.scelta) {
    
    			case 1:
    				miasquadra.assegnamentoNome();
    				break;
    			case 2:
    				miasquadra.assegnamentoNomeSponsor();
    				break;
    			case 3:
    				miasquadra.aggiuntaGiocatore();
    				break;
    			case 4:
    				miasquadra.stampasquadra();
    				break;
    
    			default:
    				cout<<"Scelta sbagliata";
    
    		}
    
    	}	while ( true );
    
        return 0;
    
    }

  9. #9
    apposto! ti ringrazio!!

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.