Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: anche io stavo provando

    Originariamente inviato da Eris
    codice:
        celsius = (farenaith-32)*(5/9);
    Il 5/9 che è racchiuso tra parentesi, viene elaborato come divisione intera. Quindi risultato 0.
    Puoi fare:
    celsius = (farenaith-32)*(5.0/9);

    oppure

    celsius = (farenaith-32)*5/9;
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #12
    Utente di HTML.it L'avatar di Eris
    Registrato dal
    Feb 2004
    Messaggi
    511
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
        long celsius;
        int farenaith=0;
        
        printf("Inserisci un numero intero da 0 a 212\n");
        scanf("%lf",&farenaith);
        
        if (farenaith <= 212) {
        celsius = (farenaith-32)*(5.0/9);
        }
        
        else if (farenaith>212){
        printf("Errore\n\n");}
        
       
      printf("La temperatura in Celsius e\':\n%+lf\n\n", celsius);
      system("PAUSE");	
      return 0;
    }
    sempre 0...

  3. #13
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Eris
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
        long celsius;
        int farenaith=0;
        
        printf("Inserisci un numero intero da 0 a 212\n");
        scanf("%lf",&farenaith);
        
        if (farenaith <= 212) {
        celsius = (farenaith-32)*(5.0/9);
        }
        
        else if (farenaith>212){
        printf("Errore\n\n");}
        
       
      printf("La temperatura in Celsius e\':\n%+lf\n\n", celsius);
      system("PAUSE");	
      return 0;
    }
    sempre 0...
    Certo, perché adesso hai messo farenaith come int (ma poi usi %lf per prendere il valore e quindi è sbagliato).
    Poi (5.0/9) dà come risultato un double, (farenaith-32) dà un int e il risultato complessivo dà un double. Solo che poi celsius l'hai messo long, quindi dovresti mettere un cast a long e perderesti comunque i decimali.

    Deciditi sui tipi di dati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #14
    Ci sono un po' di problemi con i printf e scanf in pratica usi argomenti non adatti ai tipi di dato.
    Io farei una cosa simile:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
        float celsius;
        float farenaith=0;
        
        printf("Inserisci un numero intero da 0 a 212\n");
        scanf("%f",&farenaith);
        
        if (farenaith <= 212) {
        celsius = (float)(farenaith-32)*5/9;
        }
        
        else if (farenaith>212){
    		printf("Errore\n\n");
    		exit(0);
    	}
        
       
      printf("La temperatura in Celsius e':\n%+.2lf\n\n", celsius);
      system("PAUSE");	
      return 0;
    }

  5. #15
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da zero85
    codice:
        celsius = (float)(farenaith-32)*5/9;
        
      printf("La temperatura in Celsius e':\n%+.2lf\n\n", celsius);
    Il cast a float non è necessario. Se parliamo poi di ANSI "C" (C89) il formato %lf nella printf non è standard.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #16
    Il formato %lf è un rimasuglio che mi sono scordato di cancellare

    Per il cast preferisco sempre specificare in quanto a mio avviso il codice risulta meglio interpretabile e a distanza di tempo è più facile metterci le mani dentro, questione di abitudine insomma

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.