PDA

Visualizza la versione completa : evitare il termine del programma


sasax
10-05-2002, 11:09
ho sviluppato questo codice sorgente:


#include <stdio.h>
main()
{
int alire, scel;
float risult, beuro;

scanf("%d", &scel);
if (scel == 1){
printf("inserisci le lire\n");
scanf("%d", &alire);
risult = (float) alire / 1936.27;
printf("%d lire son %.3f euro", alire, risult);
}
if (scel == 2){
printf("inserisci euro\n");
scanf("%f", &beuro);
risult = beuro * 1936.27;
printf("%.2f euro sono %.2f lire", beuro, risult);
}
if (scel != 2 && scel != 1){
printf("Spiacente scelta non consentita. dovevi scegliere 1 o 2\n");
}
return 0;
}


è un euro convertitore che se l'utente sceglie 1 converte lira a euro, se sceglie 2 converte euro a lire, se effettua una scelta diversa da 1 e 2 avverte che deve perfezionare la scelta.

Come vedete però il programma termina dopo aver effettuato l'operazione di:
conversione lira euro;
oppure conversione euro lira;
oppure scelta non consentita.

Per evitare che il programma termini e permettere quindi a gli utenti di effettuare nuove oprerazioni come devo fare?
Grazie

steno12
10-05-2002, 13:58
fai un pò così e studialo e adattatelo:

main()
{
int alire, scel;
float risult, beuro;
char letter[80];

while ((letter[0]=getchar())!='*') {

if (scel == 1){
printf("inserisci le lire\n");
scanf("%d", &alire);
risult = (float) alire / 1936.27;
printf("%d lire son %.3f euro\n", alire, risult);

}
if (scel == 2){
printf("inserisci euro\n");
scanf("%f", &beuro);
risult = beuro * 1936.27;
printf("%.2f euro sono %.2f lire\n", beuro, risult);
}
if (scel != 2 && scel != 1){

printf("Spiacente scelta non consentita devi scegliere 1 o 2\n");

}

printf("SCEGLI 1 per convertire in euro, 2 per lire\n");
scanf("%d", &scel);

}
printf("Good Bye\n");

}

sasax
10-05-2002, 17:15
ho fatto cosi e funziona ma secondo voi è corretto usare switch in questo caso o esiste un metodo alternativo?:

#include <stdio.h>
main()
{
int alire, scel;
float beuro, risult;

printf("euroconvertitire\nistruzioni:\nA converte lire\nB converte euro\nEOF (ctrl - z) termina il programma\n");

while ( (scel = getchar() ) != EOF){
switch (scel) {

case 'A': case 'a':
printf("inserisci le lire\n");
scanf("%d", &alire);
risult = (float) alire / 1936.27;
printf("%d lire son %.3f euro\nOra cosa vuoi fare?\n", alire, risult);
break;


case 'B': case 'b':
printf("inserisci euro\n");
scanf("%f", &beuro);
risult = beuro * 1936.27;
printf("%.2f euro sono %.2f lire\nOra cosa vuoi fare?\n", beuro, risult);
break;


case '\n': case ' ':
break;


default:
printf("scelta non consentita\ninserire nuovamente la scelta ( A o B o EOF):\n");
break;
}
}
printf("Grazie per aver utilizzato il programma\nBuona giornata");
return 0;
}


:rolleyes:

Loading