Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655

    Passaggio di parametro puntatore

    ciao a tutti, dunque io su questo asetto del c++ dovrei essere quasi sicuro, ma siccome ho problemi nel codice chiedo conferma.

    In c++ tutti i parametri che vengono passati alle funzioni sono passati per valore.

    Quindi se io passo una variabile puntatore alla funzione, questa copia il valore del puntatore in una variabile locale e poi lavora sulla variabile locale.

    Il bello viene qui, dopo aver finito di trattare la variabile locale non saà cambiata anche la struttura che è stata passata??

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,238
    Non capisco la domanda ... precisa meglio, magari con del codice d'esempio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Quale struttura?

    Passando una variabile per valore causi la creazione di una copia della variabile.

    Passando una variabile per indirizzo causi la creazione di una variabile puntatore che contiene l'indirizzo della variabile.

    In entrambi i casi, sia la variabile che il puntatore sono locali al corpo della funzione e hanno durata automatica.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    dunque il problema sta in questo codice :

    codice:
    void muovi (int num,Pilapunt<int> Sor,Pilapunt<int> Aus,Pilapunt<int> Des){
             if (num==1){
                         Des.inPila(Sor.leggiPila());
                         Sor.fuoriPila();
                }else{
                      muovi (num - 1,Sor,Des,Aus);
                      Des.inPila(Sor.leggiPila());
                      Sor.fuoriPila();
                      muovi (num - 1,Aus,Sor,Des);
                      }
                A=Sor;
                 B=Aus;
                 C=Des;
             }
    ho creato una classe Pilapunt e A,B,C sono tre pile che rappresentano i pioli della torre di hanoi.
    La procedura ricorsiva dovrebbe essere giusta, ma mi viene segnalato sepre un errore di pilavuota. Non riesco a capire dove sbaglio

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    allora forse ho capito dove sbaglio.

    per essere sicuro che è quello l'errore pongo questa domanda:

    Quando si definisce una procedura ricorsiva in c++, nello stack vengono memorizzati soltanto dei valori e non l'istruzione da dove riprendere il ciclo di controllo una volta finita la ricorsione?

  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    viene memorizzato anche il punto dove ci si è fermati per fare la ricorsione..

    Cmq è probabile che sia errata la ricorsione, quel A,B,C a che serve fuori dall'if?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Originariamente inviato da melmar20
    ... ma mi viene segnalato sepre un errore di pilavuota.
    Mi sembra che il tuo sia un problema di argoritmo e pertanto potrebbe anche non essere dovuto ad un uso scorretto della memoria e del ciclo di vita delle variabili.

    Per esserne sicuro se fossi in te traccerei il programma tenendo sotto controllo i valori che assumono le tue variabili, in questo modo potresti capire dove e perché si genera la condizione di "pila vuota".

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 © 2019 vBulletin Solutions, Inc. All rights reserved.