Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    5

    [C]: Ciclo Do-While che non va?!?

    Salve a tutti!
    In questi giorni stavo facendo un piccolo programmino in C...presupponendo che sono un novellino , ma come al solito mi sono trovato di fronte al solito problema insuperabile , cioè resetta quando non deve. Il programma consiste nel convertire gli euro in lire o viceversa... In fine c'è la possibilità di resettare tutto! Ho cercato di risolverlo, ma niente.
    Il programma:


    codice:
    /*Realizzare un EUROCONVERTITORE, che consente di convertire un importo da euro
    a lire o viceversa; prevedere la possibilità di resettare i valori.
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        float den, lire, euro;
        char r, r1;
    
    do{
        printf("Vuoi convertire euro in lire?\t Se si premere s, se no premere n\n");
        scanf("%c", &r);
        getchar();
    
        if(r=='s'|| r=='S'){
            printf("Inserire importo in euro:\n");
            scanf("%f", &den);
            lire=den*1936.27;
            printf("EURO in LIRE=%.2f lire\n", lire);
        }
    
        else if(r=='n'||r=='N'){
            printf("Vuoi convertire lire in euro?\t Se si premere s\n");
            scanf("%c", &r);
            getchar();
    
                if(r=='s'|| r=='S'){
                    printf("Inserire importo in lire:\n");
                    scanf("%f", &den);
                    euro=den/1937.27;
                    printf("LIRE in EURO=%.2f euro\n", euro);
                }
    
                else
                    printf("-*->Comando errato!!<-*-\n");
        }
    
        else
            printf("-*->Comando errato!!<-*-\n");
    
            printf("Vuoi resettare?\n");
            scanf("%c", &r1);
            getchar();
    
    }while(r1=='s'|| r1=='S');
    system("pause");
    system("cls");
    return 0;
    
    }

    Grazie in anticipo
    Ultima modifica di LeleFT; 29-07-2014 a 08:56 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551
    Il newline '\n' , resta nel buffer , anche quando leggi un float scanf("%f,...) , se successivamente leggi un char scanf("%c",....) , il carattere acquisito è '\n' , e la condizione while(ris=='s') è sempre falsa ..

    invece di usare un semplice getchar() , usa while(getchar()!='\n'); "attento al punto e virgola" , dopo ogni scanf()
    Tecnologia

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    5
    Ti ringrazio un sacco per il tuo aiuto

Tag per questa discussione

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.