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.
Credo che mi sia dimenticato di svuotare qualche buffer..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; }
ma non sono molto bravo con queste cose...
Qualcuno ha qualche suggerimento?
Grazie a tutti!


Rispondi quotando
)

