Temperaturrechner in C mit Funktionen
-
Ja Nabend zusammen.
Wir haben die ehrenvolle Aufgabe bekommen einen Temperaturrechner mit Auswahl (°C -> F, F -> °C) zu schreiben in dem die unten stehenden Formeln verwendet werden müssen.
Ich hab das jetzt mal so geschrieben wie ich das meine aber ich bekomme da immer nur 0 raus. Wo liegt mein Fehler?
#include <stdio.h> #include <stdlib.h> int c, f, wahl; int ToFahrenheit(int c) { [b]f=9/5*c+32;[/b] return f; } int ToCelsius(int f) { [b]c=(f-32)*5/9;[/b] return c; } int main(int argc, char *argv[]) { printf("Temperaturrechner\n"); printf("C->F=1 | F->C=2 "); scanf("%d", &wahl); if (wahl==1 || wahl==2) { if (wahl==1) { printf("Bitte Temperatur in C eingeben: "); scanf("%d", &c); printf("Ergebnis: %f\n", ToFahrenheit); } else { printf("Bitte Temp in F eingeben: \n"); scanf("%d", &f); printf("Ergebnis: %f\n", ToCelsius); } } else printf("Bitte 1 oder 2 eingeben!\n"); system("PAUSE"); return 0; }
Danke für eure Hilfe!
-
Es wäre wahrscheinlich sinnvoller, wenn du für Temperaturen nicht int-, sondern double-Variablen verwendest. Außerdem ergibt der Ausdruck
9/5
1, da 9 und 5 Integerwerte sind. Willst du die Rechnung mit double-Werten machen, so verwende double-Literale:
9.0 / 5.0
Die Zuweisung an f
int ToFahrenheit(int c) { f=9/5*c+32; return f; }
ist hier absolut überflüssig, da du den ausgerechneten Wert auch gleich mit return zurückgeben könntest. Auch solltest du dir vielleicht darüber im klaren sein, daß man Variablen auch lokal deklarieren kann; deine drei globalen Variablen sind alle überflüssig. Das hier
if (wahl==1 || wahl==2) { if (wahl==1) { ... } else { ... } } else ...
kann man außerdem wesentlich einfacher schreiben, und das
printf("Ergebnis: %f\n", ToFahrenheit);
ist gleich doppelt falsch, denn erstens geben deine Funktionen ToFahrenheit und ToCelsius keinen float- oder double-Wert zurück und zweitens rufst du die Funktionen nicht auf, sondern übergibst deren Adresse.
-
Danke, jetzt geht es
-
Ist zwar ziemlich lange her der Beitrag, aber kann jemand so freundlich sein und die Korrekte Version mal auflisten? (bin anfänger und würde gerne sehen wie das korrekt aussieht)
-
#include <stdio.h> #include <stdlib.h> double ToFahrenheit(int c){ return (9.0/5.0*c+32); } double ToCelsius(int f){ return ((f-32)*5.0/9.0); } int main(void) { int c, f, wahl; printf("Temperaturrechner\n"); printf("(1) C->F | (2) F->C "); scanf("%d", &wahl); if (wahl==1){ printf("Bitte Temperatur in C eingeben: "); scanf("%d", &c); printf("Ergebnis: %.2f\n", ToFahrenheit(c)); } else if(wahl==2){ printf("Bitte Temp in F eingeben: \n"); scanf("%d", &f); printf("Ergebnis: %.2f\n", ToCelsius(f)); } else printf("Bitte 1 oder 2 eingeben!\n"); system("PAUSE"); return 0; }
-
Super! Danke dir