Logaritmo di un numero.

di Anonimizzato3345 il
29 risposte

29 Risposte - Pagina 2

  • Perfetto! Ora si che funziona alla grandissima.
    Ora però vorrei fare in modo che quando il programma ha terminato di risolvere le equazioni dica all'utente se vuole ripetere o uscire. Come si fa?
  • The man in the plans ha scritto:


    Perfetto! Ora si che funziona alla grandissima.
    Ora però vorrei fare in modo che quando il programma ha terminato di risolvere le equazioni dica all'utente se vuole ripetere o uscire. Come si fa?
    Questo il nuovo codice:
    #include <iostream.h>
    #include <math.h>
    #include <stdio.h>

    int main ()
    {
    int test=0; //variabile che ti serve per fare il test di uscita dal ciclo while
    double T, RH, P, Td, Dp, es, e, g, a, d, Tw;

    while(test==0)
    {
    cout << "Dammi la temperatura dell'aria(°C): ";
    cin >> T;
    cout << "Dammi l'umidita'(%): ";
    cin >> RH;
    cout << "Dammi la pressione(hpa): ";
    cin >> P;
    Td=T-31.25*(2-log10(RH));
    cout << "Il dew point e'(°C): "<< Td<< endl;
    cout << "La temperatura di bulbo umido e'(°C): "<< (T+Td)/2<< endl;
    cout <<endl;
    es=0.611*exp(17.27*T/(T+237.3));
    e=(RH/100)*es;
    g= 0.00066*(P/10);
    a= 4098*(e)/(Td+237.3);
    d= (a*a);
    Dp= (116.9+237.3)*(ln(e))/(16.78-ln(e));
    Tw= ((g*T)+(d*Td))/(g+d);
    cout << "Pressione di vapore saturo: "<< es<<endl;
    cout << "Pressione di vapore: "<< e <<endl;
    cout << "Temperatura di bulbo umido: "<< Tw<< endl;
    cout << "Temperatura di rugiada: "<< Dp<< endl;
    cout << " se vuoi uscire premi 1, altrimenti per continuare premi 0"<<endl;
    cin>>test;
    } // fine while

    } //fine main

    non sono sicuro della sintassi che ho scritto perke io programmo in C, cmq l idea e quella di avere una variabile "test" che se a 0 ti fa continuare il ciclo while, se e 1 ti fa uscire.....
  • Nessun errore di sintassi, grande!
    Il programmino è finito...nel caso avessi ancora bisogno scriverò qua.
    Grazie ragazzi.
  • Siamo qua
  • Ragazzi, ora però vorrei integrare queste nuove formule:
    Wet bulb by dry bulb and humidity:

    1) compute e as [es(T)*rH/100]
    where es(T) = 0.611*EXP(17.27*T/(T+237.3)) in kPa
    T is drybulb temp in C

    e = (rH/100)* 0.611*EXP(17.27*T/(T+237.3))
    where e is ambient vapor pressure in kPa

    2) compute dewpoint temperature (Td)
    Td = [116.9+237.3ln(e)]/[16.78-ln(e)] in C

    3) compute wet bulb temperature (Tw)
    Tw = [(GAMMA*T)+(DELTA*Td)]/(GAMMA+DELTA)
    GAMMA = 0.00066*P where P is barometric pressure in kPa
    DELTA = 4098*e/(Td+237.3)^2

    unico problema è che ho provato a scriverle io così come sono, ma mi da Td e Tw quasi uguali quando invece dovrebbero venire ben diversi.
    Sapete aiutarmi?
  • Uhm posta il tuo codice e vediamo
  • Es=0.611*exp(17.27*T/(T+237.3));
    e=(RH/100)*es;
    g= 0.00066*(P/10);
    a= 4098*(e)/(Dp+237.3);
    d= (a*a);
    Dp= (116.9+237.3*log(e))/(16.78-log(e));
    Tw= ((g*T)+(d*Dp))/(g+d);
    non viene...
  • Hai dichiarato tutte le variabili di tipo float?
  • UltraBeginner ha scritto:


    Hai dichiarato tutte le variabili di tipo float?
    No, sono double.
  • Puoi postare allora tutto il codice? dalle dichiarazioni di variabile al modo in cui stampi a video i dati...
  • Ecco qua:

    #include <iostream.h>
    #include <math.h>
    #include <stdio.h>

    int main ()
    {
    int test=0;
    double T, RH, P, Dp, es, e, g, a, d, Tw;

    while(test==0)
    {
    cout << \" MeteoPrev v1.0\"<< endl;
    cout << endl;
    cout << \"Dammi la temperatura dell'aria(°C): \";
    cin >> T;
    cout << \"Dammi l'umidita'(%): \";
    cin >> RH;
    cout << \"Dammi la pressione(hpa): \";
    cin >> P;
    cout << endl;
    cout << \"Risultati\";
    cout << endl;
    cout << endl;
    es=0.611*exp(17.27*T/(T+237.3));
    e=(RH/100)*es;
    g= 0.00066*(P/10);
    a= 4098*(e)/(Dp+237.3);
    d= (a*a);
    Dp= (116.9+237.3*log(e))/(16.78-log(e));
    Tw= ((g*T)+(d*Dp))/(g+d);
    cout << \"Vapore saturo(kPa): \"<< es<<endl;
    cout << \"Vapore(kPa): \"<< e <<endl;
    cout << endl;
    cout << \"Dew point(°C): \"<< Dp<< endl;
    cout << \"Wet-bulb(°C): \"<< (T+Dp)/2<< endl;
    cout << endl;
    cout << \"Se vuoi uscire premi 1, altrimenti per continuare premi 0\"<<endl;
    cin>>test;
    }
    cin.get();
    }
  • Guarda ora esco da lavoro, domani lo guardo meglio e lo faccio girare sul mio pc....ti faccio cmq sapere qualcosa in mattinata....A domani!
  • The man in the plans ha scritto:


    Ecco qua:

    #include <iostream.h>
    #include <math.h>
    #include <stdio.h>

    int main ()
    {
    int test=0;
    double T, RH, P, Dp, es, e, g, a, d, Tw;

    while(test==0)
    {
    cout << " MeteoPrev v1.0"<< endl;
    cout << endl;
    cout << "Dammi la temperatura dell'aria(°C): ";
    cin >> T;
    cout << "Dammi l'umidita'(%): ";
    cin >> RH;
    cout << "Dammi la pressione(hpa): ";
    cin >> P;
    cout << endl;
    cout << "Risultati";
    cout << endl;
    cout << endl;
    es=0.611*exp(17.27*T/(T+237.3));
    e=(RH/100)*es;
    g= 0.00066*(P/10);
    a= 4098*(e)/(Dp+237.3);
    d= (a*a);
    Dp= (116.9+237.3*log(e))/(16.78-log(e));
    Tw= ((g*T)+(d*Dp))/(g+d);
    cout << "Vapore saturo(kPa): "<< es<<endl;
    cout << "Vapore(kPa): "<< e <<endl;
    cout << endl;
    cout << "Dew point(°C): "<< Dp<< endl;
    cout << "Wet-bulb(°C): "<< (T+Dp)/2<< endl;
    cout << endl;
    cout << "Se vuoi uscire premi 1, altrimenti per continuare premi 0"<<endl;
    cin>>test;
    }
    cin.get();
    }
    guarda ho provato il codice e funziona...forse che ci sia qualche formula errata o parentesi messa male?
  • Mi pare che tu abbia mal interpretato la formula del delta... così l'hai postata:
    DELTA = 4098*e/(Td+237.3)^2
    E così l'hai implementata:
    a= 4098*(e)/(Dp+237.3);
    d= (a*a);
    Se la formula originale è scritta così, il quadrato va calcolato solo sul denominatore e non su tutta l'espressione.

    Ciaociao
  • bottomap ha scritto:


    Mi pare che tu abbia mal interpretato la formula del delta... così l'hai postata:
    DELTA = 4098*e/(Td+237.3)^2
    E così l'hai implementata:
    a= 4098*(e)/(Dp+237.3);
    d= (a*a);
    Se la formula originale è scritta così, il quadrato va calcolato solo sul denominatore e non su tutta l'espressione.

    Ciaociao
    Urca è vero! Provo a modificarla...
    EDIT: ho modificato la formula in questo modo [d= 4098*(e)/((Dp+237.3)*(Dp+237.3));], ma, se confronto i risultati su questo sito: http://www.srh.noaa.gov/elp/wxcalc/rh.shtm noto che c'è un piccolo errore che però più l'umidità è bassa e più diventa grande l'errore.
Devi accedere o registrarti per scrivere nel forum
29 risposte