Ciao a tutti!
Inizio col dire che sono agli inizi con la programmazione C quindi non me ne vogliate se il mio problema potrebbe risultarvi banale!
Il codice qui sotto funziona come dovrebbe sotto Windows (Dev C++), mentre su linux (gcc) mi da dei problemi.
La compilazione e' ok.
Il problema avviene quando inserisco l'opzione voluta:
Dopo averla inserita, viene eseguita l'istruzione associata all'opzione ma al ciclo successivo viene eseguita automaticamente l'istruzione default!
Faccio un esempio:
premo i, invio;
introduco un numero, invio;
a questo punto viene visualizzato di nuovo l'elenco delle opzioni ma automaticamente viene stampato "Errore di digitazione"! Successivamente mi stampa ancora l'elenco delle opzioni e posso quindi inserire un'altra opzione.
codice:
int main(){
char opt;
int d;
tree root;
tree trovato;
root = maketree();
printf("Benvenuto!\n");
do {
printf("(i): inserisci elemento\n(o): stampa l'albero ordinato\n(p): stampare l'albero in preordine\n(c): cerca un elemento\n(f): stampa le foglie\n(r): rimuove tutte le foglie\n(x): esce dal ciclo di esecuzione del programma.\n");
fflush(stdin);
scanf("%c",&opt);
switch(opt){
case 'i': {
printf("Introduci un intero:");
scanf("%d",&d);
inserisci(&root, d);
break;
}
case 'o': { stampaIN(root); break;}
case 'p': { stampaPREO(root); break;}
case 'c': {
printf("Introduci un intero da cercare:");
scanf("%d",&d);
trovato = trova(root,d);
if(trovato==NULL) printf("Elemento non trovato!");
else printf("Elemento trovato!\nL'elemento ha valore: %d \n", trovato->elemento);
break;
}
case 'f': { stampafoglie(root); break;}
case 'r': { pota(&root); break;}
case 'x': { distruggi(&root); break;}
default : printf("Errore di digitazione\n");
}
} while(opt!='x');
fflush(stdin);
getchar();
return 0;
}
Credo che mi sia dimenticato di svuotare qualche buffer..
ma non sono molto bravo con queste cose...
Qualcuno ha qualche suggerimento?
Grazie a tutti!