Salve ho realizzato questo programmino in C per allenarmi un pò con le strutture. Sembra che funzioni bene (ditemi se mi è sfuggita qualcosa). L'unico difetto che non capisco è che quando nel menù seleziono 4 per visualizzare tutti gli articoli, mi compare tutto l'elenco regolarmente ma non riparte il menù subito dopo. Mi compare il trattino lampeggiante e va avanti solo se premo un tasto. Come mai? Ecco il codice:
codice:/*PROGRAMMA PER LA GESTIONE DI UN DATABASE DI FUMETTI*/ #include <stdio.h> #include <string.h> typedef struct { char nome[20]; int numero; int quantit; float prezzo; } fumetto; fumetto n[100]; main() { int i, quantit, elem, numtemp, count=0; char c, ntemp[20]; float prezzo, p1, p2; do { printf("Menu':\n"); printf("1-Inserisci fumetto\n"); printf("2-Modifica quantita'\n"); printf("3-Modifica prezzo\n"); printf("4-Visualizza tutti i fumetti\n"); printf("5-Visualizza in base al prezzo\n"); printf("6-Visualizza in base al nome\n"); printf("0-ESCI\n\n"); printf("Inserisci la scelta: "); c=getchar(); getchar(); switch (c) { case '1': printf("\nNome: "); scanf("%s", n[count].nome); printf("\nNumero: "); scanf("%d", &n[count].numero); printf("\nQuantita': "); scanf("%d", &n[count].quantit); printf("\nPrezzo: "); scanf("%f", &n[count].prezzo); ++count; break; case '2': printf("\nNome: "); scanf("%s", ntemp); printf("\nNumero: "); scanf("%d", &numtemp); printf("\nNuova quantita': "); scanf("%d", &quantit); for(i=0; i<count ; ++i) { if(n[i].numero == numtemp && !stricmp(n[i].nome, ntemp)) n[i].quantit = quantit; } break; case '3': printf("\nNome: "); scanf("%s", ntemp); printf("\nNumero: "); scanf("%d", &numtemp); printf("\nNuovo prezzo: "); scanf("%f", &prezzo); for(i=0; i<count ; ++i) { if(n[i].numero == numtemp && !stricmp(n[i].nome, ntemp)) n[i].prezzo = prezzo; } break; case '4': for(i=0; i<count ; ++i) { printf("\n%s---%d---%d---%f\n\n", n[i].nome, n[i].numero, n[i].quantit, n[i].prezzo); } break; case '5': printf("\nPrezzo 1: "); scanf("%f", &p1); printf("\nPrezzo 2: "); scanf("%f", &p2); for(i=0; i<count ; ++i) { if(n[i].prezzo > p1 && n[i].prezzo < p2) { printf("\n%s---%d---%d---%f\n\n", n[i].nome, n[i].numero, n[i].quantit, n[i].prezzo); elem++; } } printf("\n\nSono stati trovati %d articoli per un totale del %d per cento del magazzino\n\n", elem, elem*100/count); elem=0; break; case '6': printf("\nNome: "); scanf("%s", ntemp); for(i=0; i<count ; ++i) { if( !stricmp(n[i].nome, ntemp)) { printf("\n%s---%d---%d---%f\n\n", n[i].nome, n[i].numero, n[i].quantit, n[i].prezzo); elem++; } } printf("\n\nSono stati trovati %d articoli per un totale del %d per cento del magazzino\n\n", elem, elem*100/count); elem=0; break; case '0': return 0; } while(!getchar()); }while(n); }

Rispondi quotando