View Full Version : [C] Problema con switch e getchar()
Il Razziatore
30-09-2007, 11:17
Ho scritto questo programmino per provare le cose di base (ho iniziato il C da... ieri :asd:):
#include <stdio.h>
int n1,n2,risultato,scelta;
main()
{
printf("\nCosa vuoi fare?\n");
printf("1)moltiplicazione 2)addizione\n");
printf("3)divisione 4)sottrazione\n");
scanf("%d",&scelta);
switch(scelta)
{
case 1:
printf("Inserisci il primo numero: ");
scanf("%d",&n1);
printf("Inserisci il secondo numero: ");
scanf("%d",&n2);
risultato=n1*n2;
printf("\nIl risultato di %d*%d e': %d\n",n1,n2,risultato);
break;
case 2:
printf("Inserisci il primo numero: ");
scanf("%d",&n1);
printf("Inserisci il secondo numero: ");
scanf("%d",&n2);
risultato=n1+n2;
printf("\nIl risultato di %d+%d e': %d\n",n1,n2,risultato);
break;
default:
printf("Non disponibile");
}
getchar();
return 0;
}
Se faccio la moltiplicazione o l'addizione non faccio in tempo a vedere il risultato.
Anche con getchar non funziona.
Come devo fare?
Grazie ciao
mettine due.. oppure una scanf di una tua variabile giusto per tenere aperta la schermata..
Il Razziatore
30-09-2007, 13:15
Ok, grazie mille ora funziona.
Mi è spuntato un altro problema andando a fare la divisione:
case 3:
printf("Inserisci il primo numero: ");
scanf("%f",&n1f);
printf("Inserisci il secondo numero: ");
scanf("%f",&n2f);
risultatof=n1/n2;
printf("\nLa divisione tra %f e %f e': %f",n1f,n1f,risultatof);
break;
Quando vado ad inserire il primo numero mi crasha ç___ç
Perchè?
non vedo la dichiarazione di quella variabile ma premuso tu l'abbia fatta.. è un double?
Ok, grazie mille ora funziona.
ah, anche prima funzionava ma il tuo occhio non è così svelto da vedere il risultato :D
Il Razziatore
30-09-2007, 18:30
non vedo la dichiarazione di quella variabile ma premuso tu l'abbia fatta.. è un double?Si si, dichiarata: ecco come si presenta ora
#include <stdio.h>
int n1,n2,risultato,scelta;
float n1f,n2f,risultatof;
main()
{
printf("\nCosa vuoi fare?\n");
printf("1)moltiplicazione 2)addizione\n");
printf("3)divisione 4)sottrazione\n");
scanf("%d",&scelta);
switch(scelta)
{
case 1:
printf("Inserisci il primo numero: ");
scanf("%d",&n1);
printf("Inserisci il secondo numero: ");
scanf("%d",&n2);
risultato=n1*n2;
printf("\nLa moltiplicazione tra %d e %d e': %d\n",n1,n2,risultato);
break;
case 2:
printf("Inserisci il primo numero: ");
scanf("%d",&n1);
printf("Inserisci il secondo numero: ");
scanf("%d",&n2);
risultato=n1+n2;
printf("\nLa somma tra %d e %d e': %d\n",n1,n2,risultato);
case 3:
printf("Inserisci il primo numero: ");
scanf("%2.2f",&n1f);
printf("Inserisci il secondo numero: ");
scanf("%2.2f",&n2f);
risultatof=n1/n2;
printf("\nLa divisione tra %2.2f e %2.2f e': %2.2f",n1f,n1f,risultatof);
break;
default:
printf("Non disponibile");
}
getchar();
getchar();
return 0;
}
ah, anche prima funzionava ma il tuo occhio non è così svelto da vedere il risultato :D... forse lo devo aggiornare... :asd:
ma funziona o no? in ogni caso ricordati di controllare il secondo numero nella divisione che non può essere zero altrimenti ti crasha in runtime..
Il Razziatore
30-09-2007, 19:45
Si, continua a crasharmi. Scrivo 9, do invio e crasha subito.
Ziosilvio
01-10-2007, 15:40
Ok, grazie mille ora funziona.
Mi è spuntato un altro problema andando a fare la divisione:
case 3:
printf("Inserisci il primo numero: ");
scanf("%f",&n1f);
printf("Inserisci il secondo numero: ");
scanf("%f",&n2f);
risultatof=n1/n2;
printf("\nLa divisione tra %f e %f e': %f",n1f,n1f,risultatof);
break;
Quando vado ad inserire il primo numero mi crasha ç___ç
Perchè?
Non vorrei sbagliare, ma mi sa che rimane un newline sullo standard output dopo che hai operato la scelta; e quello, venendo letto dalla scanf successiva, dà problemi.
Ora provo io...
EDIT: boh... io, con un codice simile, nessun problema...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.