int GradCelsius = (5/9) *(GradFahrenheit-32);
Das ist keine Funktion.
Der Wert für GradCelsius
wird einmalig berechnet und ändert sich nicht mehr. Auch dann nicht, wenn sich ...
GradFahrenheit = GradFahrenheit + 20;
... der Wert von GradFahrenheit
ändert.
Stattdessen müsstest du innerhalb der while
-Schleife die Temperatur in °C mittels
GradCelsius = (5/9) *(GradFahrenheit-32);
neu berechnen.
Wenn du dieses Problem beseitigt hast, dann wartet ein neues Problem auf dich (das sich allerdings genau so äußert wie das erste):
5
ist ein int
. 9
ist ein int
. Also ist 5/9
ein int
. Und zwar ist 5/9 == 0
wie du mittels
#include <stdio.h>
int main() {
if (5/9 == 0) {
printf("Wo sind meine Nachkommastellen?\n");
} else {
printf("Ich bin sehr gebrochen.\n");
}
}
feststellen kannst.
Verwende stattdessen 5/9.0
um zu erzwingen, dass das Ergebnis eine Fließkommazahl wird.
Außerdem solltest du das Ergebnis von
(5/9.0) *(GradFahrenheit-32);
mittels round()
runden. Ansonsten werden bei der Zuweisung zur int
-Variablen GradCelsius
einfach die Nachkommastellen abgechnitten. Dadurch wird zum Beispiel \(120°\mathrm{F}\) (a.k.a. \(48,\overline{8}°\mathrm{C}\)) zu \(48°\mathrm{C}\) abgerundet, anstatt korrekt zu \(49°\mathrm{C}\) aufgerundet zu werden.
`