Pagina 1 di 1

programmino sulle operazioni parzialmente funzionante

Inviato: domenica 14 settembre 2008, 18:08
da robyganau
Cari utenti,
ho un problema.
Sono un novizio nello studio del C e non riesco a far funizonare questo piccolo programmino.
Dopo aver chiesto l'inserimento delle prime due variabili int, si interrompe.
Dove ho sbagliato? Vi prego di aiutarmi.
Grazie e buona serata.

Codice: Seleziona tutto

#include<stdio.h>

int main()

{
printf("Inserisci il primo numero\n");
int a;
scanf("%d", &a);

printf("Inserisci il secondo numero\n");
int b;
scanf("%d", &b);

printf("Scegli il tipo di operazione\n");
char op;
op = getchar();
if (( op == 'M')||( op == 'm'))
{printf("Hai scelto la moltiplicazione\n");
printf("Il risultato è %d\n", a*b);}

if (( op == 'D')||(op == 'd'))
{printf("Hai scelto la divisione\n");
printf("Il risultato è %d\n", a/b);}

if (( op == 'A')||( op == 'a'))
{printf("Hai scelto la addizione\n");
printf("Il risultato è %d\n", a+b);}

if (( op == 'S')||( op == 's'))
{printf("Hai scelto la sottrazione\n");
printf("Il risultato è %d\n", a-b);}

}

Re: programmino sulle operazioni parzialmente funzionante

Inviato: domenica 14 settembre 2008, 18:13
da bite
la scanf scarta eventuali newline ('\n') iniziali e non toglie quelli finali. Quindi finché usi solo scanf funziona, perché la scanf successiva toglie il newline lasciato da quella precedente. Ma quando chiami getchar, questa trova il newline lasciato dalla scanf precedente, che non corrisponde a nessuna operazione, quindi non viene eseguito nessun if e il programma esce senza fare più nulla.

Re: programmino sulle operazioni parzialmente funzionante

Inviato: domenica 14 settembre 2008, 18:23
da robyganau
Cosa intendi per newline iniziali o finali? E anche correggendo e usando solo scanf il risultato è lo stesso.
Il programma funziona male.

Re: programmino sulle operazioni parzialmente funzionante

Inviato: domenica 14 settembre 2008, 18:43
da bite
Prova così:

Codice: Seleziona tutto

#include<stdio.h>

int main()

{
printf("Inserisci il primo numero\n");
int a;
scanf("%d", &a);

printf("Inserisci il secondo numero\n");
int b;
scanf("%d", &b);

printf("Scegli il tipo di operazione\n");
char op;
do {
	op = getchar();
} while (op == '\n');

if (( op == 'M')||( op == 'm'))
{printf("Hai scelto la moltiplicazione\n");
printf("Il risultato è %d\n", a*b);}

if (( op == 'D')||(op == 'd'))
{printf("Hai scelto la divisione\n");
printf("Il risultato è %d\n", a/b);}

if (( op == 'A')||( op == 'a'))
{printf("Hai scelto la addizione\n");
printf("Il risultato è %d\n", a+b);}

if (( op == 'S')||( op == 's'))
{printf("Hai scelto la sottrazione\n");
printf("Il risultato è %d\n", a-b);}

}