Problema menù dinamico

di il
2 risposte

Problema menù dinamico

Ciao a tutti ragazzi, è la prima volta che scrivo su un forum, vi ringrazio in anticipo per la disponibilità. Ho cercato di svolgere la traccia di un problema che mi dice di creare una libreria di sottoprogrammi che effettuano operazioni su un array monodimensionale, pero è l'utente a scegliere quale operazione effettuare selezionandolo tramite un menù. Ho creato solo una prima funzione ( quella di riempimento dello array con numeri interi) e sono incappato in un problema; quando lancio il programma e seleziono l'unica funzione da svolgere sullo array, il programma la esegue ma una volta terminato il riempimento il ciclo do-while non mi permette di scegliere se voglio tornare al menù o terminare il programma e ripete il ciclo stampando di nuovo il "menù operazioni "; come posso risolvere questo problema.
Questo è il codice:

#include<stdio.h>
#include<stdlib.h>
#define card 10

void inserisci(int Vet[card],int riemp);


main()


{

int Vet[card],i,riemp;
int esci;
char carattere, torna;

do{

printf("\tMENU' OPERAZIONI\n\n");
printf("quali operazioni vuoi effettuare sull'array Vet'?\n\n");
printf("se desideri riempire lo array premere a\n");
printf("se desideri uscire premere b\n");
scanf("%c",&carattere);

switch(carattere){
case 'a': inserisci(Vet,riemp);break;
case 'c': esci=1; break;}



printf("Si desidera tornare al Menu' Principale?\n");
printf("digita 's' se Si, desidero tornare al Menu' Principale\n");
printf("digita 'n' se No, desidero uscire \n");
scanf("%c",&torna);

}
while (torna!='n');

system("Pause");

}

void inserisci(int Vet[card],int riemp){
int i;
do{ printf("quanti elementi vuoi inserire\n");
scanf("%d",&riemp);}
while(riemp>card);
for(i=0;i<riemp;i++){
printf("immetti valore in Vet(%d)",i);
scanf("%d",&Vet);}
}

2 Risposte

  • Re: Problema menù dinamico

    Problemi di svuotamento buffer...
    In poche parole quando immetti un input da tastiera nel buffer vengono inseriti anche altri caratteri.
    Quando esegue la scanf(), trova già il carattere e non te lo chiede...
    Prima di scanf prova a mettere fflush(stdin); che svuota appunto lo stream stdin (che spesso è legata alla tastiera)
  • Re: Problema menù dinamico

    Grazie mille !!! funziona perfettamente.
Devi accedere o registrarti per scrivere nel forum
2 risposte