Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] Convertitore lire-euro.

    #include <stdio.h>

    main()
    {float lire, euro;
    for(;{
    printf("Inserire la cifra in euro");
    printf("\n");
    lire=0;
    scanf("%d", &euro);


    lire=1936.27*euro;

    printf("Lire:\n");
    printf("%f", lire);

    while(getchar()!='\n');
    while(getchar()!='\n');
    while(getchar()!='\n');
    }
    }

    Questo è il sorgente, che, eseguito mi dà un programma secondo cui ogni cifra in euro è carta straccia (qualasiasi cifra in euro da' 0 lire).

  2. #2
    codice:
    scanf("%f", &euro);
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    ...:-D.

    Sapessi quante volte l'ho riletto!:P

  4. #4
    Comunque, grazie!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    84
    Salve scusatemi se uso questo topic ma visto che anche io ho un problema con un convertitore euro-lire ho pensato che era il posto giusto. Nel mio convertitore ho usato anche delle funzione e ho creato un menù. Come vedete nel codice sottostante se nel menù scelgo 3 mi stampa l'ultimo risultato su file. Il fatto è che dopo che premo 3 e invio mi compare il trattino lampeggiante e per continuare devo premere invio di nuovo ma io non l'ho scritto. Cioè vorrei che facesse tutto in automatico e riavviasse il programma. Come mai?

    codice:
    /*CONVERTITORE LIRE-EURO O EURO-LIRE*/
    
    #include <stdio.h>
    
    float euro_lire (float a);  /*FUNZIONI PROTOTIPO*/
    float lire_euro (float a); 
    int stampa_su_file (float a, float b);
    
    int main()
    {
    
    float lire=0, euro=0;
    char c;
    int v;
    
    do
    {
    printf("Inserire la scelta:\n\n\n");
    printf("1-Converti Euro in Lire\n");
    printf("2-Converti Lire in Euro\n");
    printf("3-Stampa su file l'ultima conversione\n");
    printf("0-ESCI\n\n");
    
    c=getchar();
    getchar();
    
    switch (c)
    {
           case '1':
           printf("\nInserire il valore in Euro:\n");
           scanf("%f", &euro);
           lire=euro_lire(euro);
           printf("Valore in Lire: %.3f\n\n", lire);
           break;
           
           case '2':
           printf("\nInserire il valore in Lire:\n");
           scanf("%f", &lire);
           euro=lire_euro(lire);
           printf("Valore in Euro: %.3f\n\n", euro);
           break;
           
           case '3':
           v=stampa_su_file(euro, lire);
           if(v==1)
           printf("\nEseguito!\n\n");
           break;
           
           case '0':
           return 0;
           
    }
    
    while(!getchar());   /*SVUOTA IL BUFFER DI TASTIERA*/
    
    }while(c);     
    }
    
    
                   float euro_lire (float a)
                   {
                   float b;
                   b= a*1936.27;
                   return(b);
                   }
    
    
    
                   float lire_euro (float a)
                   {
                   float b;
                   b= a/1936.27;
                   return(b);
                   }     
    
                   
                   int stampa_su_file (float a, float b)
                   {
                   FILE *pf = fopen("Convertitore.txt", "a+");
                   if (pf==NULL)
                   return 0;
           
                   fprintf(pf, "Euro %.3f ---- Lire %.3f\n\n", a, b);
                   fclose(pf);
                   return 1;
                   }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La linea

    while(!getchar()); /*SVUOTA IL BUFFER DI TASTIERA*/

    deve essere inserita solamente se esegui una scanf ...

    Dato che NON esegui la scanf nel terzo caso, allora TOGLI quella riga e aggiungila solamente dopo le due scanf

    scanf("%f", &euro);
    while(!getchar());

    e

    scanf("%f", &lire);
    while(!getchar());
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.