ciao a tutti, questo che riporto qui sotto è il corpo della funzione che risolve l'algoritmo della torre di hanoi iterativamente. Fa uso di una struttura 'Pilapunt'(testata e funzionante) e una struct che riporto qui sotto
Struct:
codice:
struct tipoelem{
int num_dischi;
int ritorno;
Pilapunt<int> A,B,C;};
Questo il codice:
codice:
Pilapunt <tipoelem> pilaAppoggio;
tipoelem stato;
Pilapunt<int> temp;
blocco1:
if(num==1){
Des.inPila(Sor.leggiPila());
Sor.fuoriPila();
goto blocco3;
}else{
stato.num_dischi=num;
stato.A=Sor;
stato.B=Aus;
stato.C=Des;
stato.ritorno=2;
pilaAppoggio.inPila(stato);
num=num-1;
temp=Des;
Des=Aus;
Aus=temp;
goto blocco1;
}
blocco2:
Des.inPila(Sor.leggiPila());
Sor.fuoriPila();
stato.num_dischi=num;
stato.A=Sor;
stato.B=Aus;
stato.C=Des;
stato.ritorno=3;
pilaAppoggio.inPila(stato);
num=num-1;
temp=Sor;
Sor=Aus;
Aus=temp;
goto blocco1;
blocco3:
if(!pilaAppoggio.pilaVuota()){
stato=pilaAppoggio.leggiPila();
pilaAppoggio.fuoriPila();
num=stato.num_dischi;
Sor=stato.A;
Des=stato.C;
Aus=stato.B;
switch(stato.ritorno)
{
case (2):
goto blocco2;
break;
case (3):
goto blocco3;
break;
}
}
Ora mi viene sempre segnalato un errore, si sta cercando di effettuare la lettura di una pila che non contiene elemeti.
Quindi tutte le mie attenzioni si sono spostate su questa istruzione :
codice:
stato=pilaAppoggio.leggiPila();
la funzione leggiPila della classe pila restituisce un tipo come quello definito al momento dell'istanzazione della classe, in questa caso quindi ,
Pilapunt<tipoelem> restituisce un tipoelem. E per me non c'è niente di strano.
Ora le mie domande sono 2 :
1-non è che c'è un problema di assegnazione quando viene restituito un puntatore, come nel mio caso dove il leggiPila restituisce un puntatore?
2-se non è quello citato sopra, dove si nasconde il problema??