umrechnungshilfe



  • hio
    bin neu hier un auch relativ neu im c++

    da meine frage sich etwas auf mathe bezieht, bin ich vll falsch hier, also bitte sagen oder verschieben wenns so is
    danke

    zu problem:
    wollte n kleines programm als consolenanwendung schreiben, welches kelvin in celsius und fahrenheit um rechnet, un auch in alle andern 2 varianten, also:
    C in F und K
    F in C und K
    K in C unf F

    ich poste ma die problem stelle un erläuter dann:

    [cpp]
    .
    .
    .
    case 3:
    		//Umrechnung:
    		//C = (F - 32) * 5 / 9
    		//K = 5 / 9 * F + 459,67
    		cin>>i_Fahrenheit;
    		i_Celsius = ((i_Fahrenheit - 32)*5) / 9;
    		[b]i_Kelvin = 5 / 9 *(i_Fahrenheit + 459,67);[/b]
    		cout<<endl<<i_Fahrenheit<<"F betragen "<<i_Celsius<<"C und "<<i_Kelvin<<"K."<<endl;
    break;
    .
    .
    .
    [/cpp]
    

    problem is, dass das fettgedruckte, falsch ist, un dass ich im netz 3 verschiedene varianten zum umrechnen gefunden hab, nur keine die stimmt 😞

    wisst ihr vll was da richtig is?

    mfg
    ani



  • jo ist kein MFC, aber vllt. hilft mal genau hinschauen
    :

    [cpp]
    i_Celsius = ((i_Fahrenheit - 32)5*)** / 9;
    i_Kelvin = 5 / 9 *(i_Fahrenheit + 459,67);
    [/cpp]

    Sprich setzt mal in i_Kelvin ein paar Klammern mehr



  • Mathematisch dürfte das fettgedruckte schon richtig sein (habe ich jetzt nicht kontrolliert), technisch bist du in eine Falle gelaufen, die sich "Ganzzahldivision" nennt - 5/9 wird ganzzahlig dividiert und ergibt 0 (der Rest 5 verfällt). Außerdem ist das Dezimaltrennzeichen in C++ der Punkt - das Komma ist ein eigenständiger Operator und macht dir hier zusätzlich die Rechnung kaputt.

    Beide Probleme kannst du lösen, indem du die Rechnung etwas umstellst:

    i_Kelvin = (i_Fahrenheit + 459.67)*5/9;
    

    (*grübelt* Die Klammersetzung passt übrigens nicht so ganz zu dem oberen Kommentar)



  • 5 / 9 *(i_Fahrenheit + 459,67);
    (i_Fahrenheit + 459.67)*5/9;
    is das nich das gleiche? prudukte kann man doch vertauschen wie man will (oder wie die bei der multiplikation eben heißen)

    abgesehn vom "." und ","

    danke, mit der änderung gehts

    mfg



  • es ist nicht das selbe...wenn man klammern nicht setzt, oder vergisst, dann kann schonmal ein falsches Ergebnis rauskommen.

    Bsp hast du selber geliefert.

    Hier hast du ein klammernpaar mehr drin.

    i_Celsius = ((i_Fahrenheit - 32)*5) / 9;
    

    Und hier haste es weggelassen:

    i_Kelvin = 5 / 9 *(i_Fahrenheit + 459,67);
    

    Mach mal in die i_Kelvon rechnung ein paar mehr rein und versuchs nochmal. Wenns dann immernoch nicht klappt, dann lass das " 5 / 9 " weg und ersetz das gleich durch den Wert " 0.55556 ". vllt ist das dann der Weg. Denn da du warschinlich eh na 3 kommastellen rundest macht es auch nichts, wenn igendwo was nicht ganz passt. Wenn dus aber UNBEDINGT haben willst, dann steck das Deividieren in eine extra Variable



  • Animal21 schrieb:

    5 / 9 *(i_Fahrenheit + 459,67);
    (i_Fahrenheit + 459.67)*5/9;
    is das nich das gleiche? prudukte kann man doch vertauschen wie man will (oder wie die bei der multiplikation eben heißen)

    Mathematisch ist es womöglich das selbe, technisch nicht - siehe meine Erklärungen zur Ganzzahldivision.

    Das Produkt wird schrittweise von links nach rechts berechnet, dadurch ergeben sich Unterschiede:

    a)
    5/9100*
    -> 0
    100* (bei der Ganzzahldivision werden Nachkommastellen weggelassen
    -> 0

    b)
    *100**5/9
    -> 500/9
    -> 55

    (mit Gleitkommazahlen wäre das nicht passiert ;))

    @Uruk-h4j: Bitte keine Halbwahrheiten 😉 Klammern setzt man dort, wo sie benötigt werden, nicht um überall die gleiche Anzahl zu bekommen.



  • vielen dank für die hilfen

    kleine offtopic frage:
    wo muss ich postn wenn ich ne "consolenanwendungs"-frage hab, bzw is die einteilung überhaupt richtig? XD



  • Animal21 schrieb:

    vielen dank für die hilfen

    kleine offtopic frage:
    wo muss ich postn wenn ich ne "consolenanwendungs"-frage hab, bzw is die einteilung überhaupt richtig? XD

    Da: http://www.c-plusplus.net/forum/viewforum-var-f-is-13.html 🙂
    Deine Frage gehört eigentlich auch eher ins Matheforum oder ins C++ oder ins Konsolenforum. Wo möchtest du hin? 😉


Anmelden zum Antworten