programmino sulle operazioni parzialmente funzionante

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
robyganau
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 254
Iscrizione: giovedì 29 marzo 2007, 17:45

programmino sulle operazioni parzialmente funzionante

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

}
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: programmino sulle operazioni parzialmente funzionante

Messaggio 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.
robyganau
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 254
Iscrizione: giovedì 29 marzo 2007, 17:45

Re: programmino sulle operazioni parzialmente funzionante

Messaggio da robyganau »

Cosa intendi per newline iniziali o finali? E anche correggendo e usando solo scanf il risultato è lo stesso.
Il programma funziona male.
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

Re: programmino sulle operazioni parzialmente funzionante

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

}
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti