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);
}