Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Aiuto con getchar()

  1. #1

    Aiuto con getchar()

    Ciao a tutti
    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:


    codice:
    #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
    Ultima modifica di LeleFT; 28-08-2014 a 12:59 Motivo: Inseriti tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    @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 [CODE] ... [/CODE], così mantiene formattazione ed indentazione del forum, rendendolo più leggibile.


    Ho sistemato io il post.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Grazie mille In ogni modo, sai come risolvere il mio problema?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Basta aggiungere un
    codice:
    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.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.