PDA

Visualizza la versione completa : Aiuto con getchar()


khjaretta
28-08-2014, 12:44
Ciao a tutti http://www.iprogrammatori.it/forum-programmazione/images/smilies/f1.gifhttp://www.iprogrammatori.it/forum-programmazione/images/smilies/f1.gif
Stavo provando a fare questo esercizio
"Scrivete un programma in modo che sommi, sottragga, moltiplichi e divida due frazioni (immesse dall'utente) immettendo +, -, * o /".
Io avevo fatto in questo modo:




#include <stdio.h>
int main(void)
{
int num1, denom1, num2, denom2, result_num, result2_num, result3_num, result4_num, result_denom, result4_denom;
char ch;

printf("Inserisci la prima frazione: ");
scanf("%d/%d", &num1, &denom1);

printf("Inserisci la seconda frazione: ");
scanf("%d/%d", &num2, &denom2);

result_num = num1 * denom2 + num2 * denom1;
result2_num = num1 * denom2 - num2 * denom1;
result3_num = num1 * num2;
result4_num = num1 * denom2;
result_denom = denom1 * denom2;
result4_denom = denom1 * num2;



printf("Inserisci il segno: ");
while (ch != '\n') {
switch(ch) {
case '+' : printf("%d/%d", result_num, result_denom); break;
case '-' : printf("%d/%d", result2_num, result_denom); break;
case '*' : printf("%d/%d", result3_num, result_denom); break;
case '/' : printf("%d/%d", result4_num, result4_denom); break;
}
ch = getchar();
}
return 0;
}



Il problema č che dopo aver inserito le due frazioni va direttamente alla fine del programma e non mi fa inserire il segno... Sicuramente ho sbagliato qualcosa con getchar() e simili, ma cosa??
Aiutatemi voi, grazie in anticipo:):):)

LeleFT
28-08-2014, 13:01
@khjaretta: quando posti del codice, segui queste direttive:

1) Togli tutta la formattazione dell'ambiente di sviluppo (incollando prima il tutto in un editor privo di formattazione, come ad esempio il Blocco Note di Windows o altro editor equivalente, e poi ri-copiando il codice da quest'ultimo)

2) Inserisci il codice tra i tag
... , cosė mantiene formattazione ed indentazione del forum, rendendolo pių leggibile.


Ho sistemato io il post.


Ciao. :ciauz:

khjaretta
28-08-2014, 13:05
Grazie mille :) In ogni modo, sai come risolvere il mio problema? :ciauz:

Scara95
28-08-2014, 13:12
Basta aggiungere un
while(getchar()!='\n'); dopo l'ultimo scanf. Il motivo č spiegato il altre migliaia di discussioni sul forum. scanf lascia il buffer sporco, non rimuove tutti i caratteri.

Loading