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
dankezu 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 Fich 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*
-> 0100* (bei der Ganzzahldivision werden Nachkommastellen weggelassen
-> 0b)
*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? XDDa: 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?