Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Programma che cicla all'infinito

    Ciao a tutti,
    vorrei una mano con un esercizio che mi richiede un programma che dovrebbe prendere in input i lt e i km di ogni viaggio e calcolare una media per viaggio e una media complessiva. Se lo eseguo dichiarando tutte variabili di tipo int il programma funziona, ma se introduco quelle di tipo float (come richiesto nell'es.) mi cicla all'infinito.
    (Dev C++ su windows)

    codice:
    #include <stdio.h>
    
    int main()
    {
        int km, totKm;
        
        float lt, totLt, media, mediaCompl;
        
        lt = 0;
        totKm = 0;
        totLt = 0;
        
        printf ("Enter lt used (-1 to end): ");
        scanf ("%f", &lt);
        
        while (lt != -1){
              printf ("Enter km driven: ");
              scanf ("%d", &km);
              totLt += lt;
              totKm += km;
              media = (float) km / lt;
              printf ("The km/lt for this tank was %d\n\n", media);
        
              printf ("Enter lt used (-1 to end): ");
              scanf ("%f", &lt);
              }
              
              mediaCompl = (float) totKm / totLt;
              printf ("The overall average km/lt was %d\n", mediaCompl);    
              
        system ("PAUSE");
        return 0;
    }

    Aiutatemi per favore
    p.s. Spero di essermi espresso in modo corretto, sono alle prime armi.

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    138
    ti cicla all'infinito?
    a me sembra fatto bene (anche se appetterei il giudizio di qualcuno piu' esperto).
    Inserisci i litri e i km che vuoi calcolare tutte le volte che vuoi a meno che non digiti -1;
    una volta digitato -1 poi ti dovrebbe dare la media complessiva.
    Correggimi se sbaglio.

  3. #3
    Esatto, il funzionamento dovrebbe essere quello.
    Se articolo il prog in modo che riceva solo valori interi funziona, ma così com'è inserendo un numero in virgola il prompt mi parte all'infinito. Allora ho pensato che forse dipende dal compilatore sul mio SO. Può essere?

  4. #4

    Re: Programma che cicla all'infinito

    Originariamente inviato da f@nt@m@n
    Ciao a tutti,
    vorrei una mano con un esercizio che mi richiede un programma che dovrebbe prendere in input i lt e i km di ogni viaggio e calcolare una media per viaggio e una media complessiva. Se lo eseguo dichiarando tutte variabili di tipo int il programma funziona, ma se introduco quelle di tipo float (come richiesto nell'es.) mi cicla all'infinito.
    (Dev C++ su windows)

    codice:
    #include <stdio.h>
    
    int main()
    {
        int km, totKm;
        
        float lt, totLt, media, mediaCompl;
        
        lt = 0;
        totKm = 0;
        totLt = 0;
        
        printf ("Enter lt used (-1 to end): ");
        scanf ("%f", &lt);
        
        while (lt != -1){
              printf ("Enter km driven: ");
              scanf ("%d", &km);
              totLt += lt;
              totKm += km;
              media = (float) km / lt;
              printf ("The km/lt for this tank was %d\n\n", media);
        
              printf ("Enter lt used (-1 to end): ");
              scanf ("%f", &lt);
              }
              
              mediaCompl = (float) totKm / totLt;
              printf ("The overall average km/lt was %d\n", mediaCompl);    
              
        system ("PAUSE");
        return 0;
    }

    Aiutatemi per favore
    p.s. Spero di essermi espresso in modo corretto, sono alle prime armi.
    il probema è che stampi come interi (%d) dei valori float (%f)

    correggi le printf e vedrai che tutto funziona a meraviglia

    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  5. #5

    Re: Re: Programma che cicla all'infinito

    Originariamente inviato da Shagrat
    il probema è che stampi come interi (%d) dei valori float (%f)

    correggi le printf e vedrai che tutto funziona a meraviglia

    Hai ragione, l'errore c'è, ma mi continua ugualmente a dare il problema. Non appena inserisco il valore di lt mi esegue:

    Enter lt used (-1 to end): Enter km driven: The km/lt for this tank 0,...
    ripetuto all'infinito

    Senza che io possa immettere alcun altro valore :master:

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    17
    potresti provare a pulire il buffer della tastiera, anke se con i numeri non dovrebbe dare questi problemi, perlomeno con il c della bolrand dovevo pulire il buffer della tastiera per evitare errori simili, anke se non ciclici.. però puoi provare.. la sintassi per la pulizia del buffer nel c della borland è fflush(stdin); poi non se anche in questo compilatore è uguale.. prova ad inserirlo prima di ogni inserimento dati che devi fare

  7. #7
    la virgola va immessa con il punto "."
    non con la virgola ","

  8. #8
    codice:
    #include <stdio.h>
    
    int main()
    {
        float km, totKm;
        
        float lt, totLt, media, mediaCompl;
        
        lt = 0;
        totKm = 0;
        totLt = 0;
        
        printf ("Enter lt used (-1 to end): ");
        scanf ("%f", &lt);
        
        while (lt != -1){
              printf ("Enter km driven: ");
              scanf ("%f", &km);
              totLt += lt;
              totKm += km;
              media = (float) km / lt;
              printf ("The km/lt for this tank was %f\n\n", media);
        
              printf ("Enter lt used (-1 to end): ");
              scanf ("%f", &lt);
              }
              
              mediaCompl = (float) totKm / totLt;
              printf ("The overall average km/lt was %f\n", mediaCompl);    
              
        system ("PAUSE");
        return 0;
    }
    guarda...io ho provato a compilare il progremma qui sopra e funziona alla perfezione

    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  9. #9
    Originariamente inviato da the creator
    la virgola va immessa con il punto "."
    non con la virgola ","
    Era questo. Errori da principiante.
    Grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    138
    anche a me funziona benissimo

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.