Consenso all'uso dei cookies

SITO1 -- SITO2 -- Forum2 -- CercaGlobale -- Informativa su Cookie e Privacy

Questo Forum1 è in sola lettura -- Usa il Forum2


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Problemi in C
#1
Salve ragazzi, sto imparando il C, e sul manuale che seguo mi è stato proposto di creare per esercizio una tabella celsius to firenight.
Ecco cosa ho scritto:

Codice:
#include <stdio.h>
main()
{
int fahr, celsius;
float minimo, massimo, intervallo;
minimo=0;
massimo=300;
intervallo=20;
fahr=minimo;

while (fahr<=massimo) {
    celsius= (5.0/9.0) * (fahr-32.0);
    printf("%3.0f %3.4f \n", fahr, celsius);
    fahr= fahr+intervallo;
    }

}

Ma il risultato è
0 0.0000
0 0.0000
eccetera.

Cosa sto sbagliando?
Grazie dell'aiuto arrossire
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio
#2
a occhio, l'errore è aver dichiarato le variabili celsius e fahr come int (interi);
5/9=0,... ti viene riconvertito in 0 e quando fai la moltiplicazione moltiplichi sempre per 0
Il mio blog: http://zerozerocent.blogspot.it/
Legge di Murphy: SE QUALCOSA PUO' ANDAR MALE, LO FARA'
Cita messaggio
#3
spero che la dicitura "firenight" sia per ridere visto che è Fahrenheit dal cognome del fisico che ha ideato tale scala.
Cita messaggio
#4
(29-01-2013, 22:15 )Singolarity Ha scritto: spero che la dicitura "firenight" sia per ridere visto che è Fahrenheit dal cognome del fisico che ha ideato tale scala.

Sorry, temevo l'errore Cool Big Grin Rolleyes
Che stupido XD
Grazie BAT
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio
#5
Buonasera.. ho un problema con un esercizio in C che mi è stato proposto su un manuale di programmazione.
Devo impostare una tabella di conversione da °C a Fahrenehiet che ho scritto così:
Codice:
#include <stdio.h>
main()
{
        int fahr, celsius;
        int lower, upper, step;
        lower= 0;
        upper= 300;
        step= 20;
        fahr=lower;
        printf("celsius \t fahr \n\n");
        while(celsius<=upper){
            fahr=(9*celsius/5)+32;
            printf("%d \t\t %d \n",celsius, fahr);
            celsius = celsius-step;
        }
}

Che mi dia come output lo stesso risultato, ma invece che da 0 a 300 da 300 a 0.
Sapete aiutarmi?
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio
#6
Hai fatto lo stesso errore dell'altro esercizio; non devi dichiarare le variabili come interi perché potenzialmente il risultato della divisione subisce un troncamento. Comunque non c'è bisogno di usare tutte quelle variabili, ne basterebbero di meno. Questa la soluzione ipotizzando che si stampino le temperature a partire da 300 °C fino ad arrivare a 0 °C ad intervalli di 10 gradi.

Allego sorgente (togli il .txt al file).

Codice:
#include <stdio.h>
void main() {
    double fahrenheit, celsius;
    double min, max, step;
    min=0.0;
    max=300.0;
    step=10.0;
    celsius=max;
    printf("\nCelsius      Fahrenheit");
    printf("\n-------      -------");
    while (celsius>=min) {
        fahrenheit= 1.8*celsius+32.0; /*** Nota che 1.8=9/5 ***/
        printf("\n%3.0lf          %3.2lf", celsius, fahrenheit);
        celsius= celsius-step;
    }
}

[EDIT] ho apportato una piccola correzione e unito le discussioni; vedere prossimo post per i dettagli
Il mio blog: http://zerozerocent.blogspot.it/
Legge di Murphy: SE QUALCOSA PUO' ANDAR MALE, LO FARA'
Cita messaggio
#7
Allego piccola correzione:
quando si fanno i controlli nei cicli è meglio usare variabili int (per questioni di precisione nel controllo sugli intervalli), mentre le temperature devono essere decimali (meglio double che float); allego .zip con i sorgenti e gli eseguibili compilati sotto Windows-7_64. Ho cambiato gli estremi di temperatura in modo da includere -40 (unica temperatura uguale tra Celsius e Fahranheit).

Ovviamente le tabelle non sono uguali ma, se si vuole la stessa tabella basta cambiare in una delle 2 gli estremi dell'intervallo di temperatura.


Allegati
.zip   conv.zip (Dimensione: 74,92 KB / Download: 4)
Il mio blog: http://zerozerocent.blogspot.it/
Legge di Murphy: SE QUALCOSA PUO' ANDAR MALE, LO FARA'
Cita messaggio
#8
Grazie mille BAT delle utili precisazioni Smile
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio
#9
Ho modificato il titolo del post, almeno lo uso per chiedere aiuto.
Sempre seguendo il libro Il linguaggio c di ritchie e kernigham, ho trovato un esercizio che dice: si verifichi che l'espressione getchar() != abbia valore 0 o 1....
Ci batto la testa da 2 ore....
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio
#10
Forse ci sono riuscito: ecco la riposta del terminale: 


Allegati Anteprime
   
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)