2016-10-16 15 views
-3

Ich mache eine Programmieraufgabe in meiner CS-Klasse mit C++, die mir Probleme gibt. Die Aufgabe besteht darin, ein Programm zu schreiben, das den Benutzer auffordert, eine Fahrenheit-Temperatur einzugeben. Das Programm muss dann das Celsius-Äquivalent dieser Temperatur und die Celsius-Äquivalente der nächsten 20 Fahrenheit-Temperaturen ausgeben. Dies muss mit einer separaten Funktion geschehen, um die Umrechnungsberechnung abzuschließen, sowie mit einem Funktionsprototyp.Rückgabe von Werten aus einer separaten Funktion in C++?

Ich habe alles zu arbeiten, außer meine Celsius Ausgänge zeigen alle einen Wert von 0. Ich kann nicht scheinen, irgendwelche Fehler zu finden oder herauszufinden, was falsch ist ... Bitte Hilfe!

#include <iostream> 
#include <iomanip> 

using namespace std; 

double Celsius(double temp); 

int main() { 

double fTemp, cTemp; 

cout << "Please input a temperature in degrees Fahrenheit: "; 
cin >> fTemp; 

cout << "F Temp" << "  " << "C Temp"<< endl; 
cout << "-------------------" << endl; 

for(int count=1; count<= 20; count++){ 

    cTemp = Celsius(fTemp); 

    cout << setw(6) << fTemp << setw(12) << cTemp<< endl; 

    fTemp++; 

} 


return 0; 
} 

//*************Celsius Function****************// 

double Celsius(double temp){ 

double newC; 
newC = (temp-32) * (5/9); 
return newC; 

} 
//************************************************ 
+2

Wären Sie überrascht zu erfahren, dass 5 geteilt durch 9 0 ist? Das passiert, wenn Sie eine Ganzzahl-Division verwenden. –

Antwort

0

(5/9) ist eine Ganzzahl-Ganzzahl-Division. Sie könnten auch dort 0 eingegeben haben. Ersetzen Sie es durch (5.0/9.0) und es sollte in Ordnung sein.

+0

Das war ein dummer Fehler meinerseits. Danke für die Hilfe!!! – ljjandre

0

Man könnte einfach versuchen, (5,0/9,0) oder eine Art von etwas zu tun, wie

double Celsius(double temp){ 
    double newC; 
    newC = (temp-32) * (float)5/9; 
    return newC; 
} 

Dabei werfen verwenden, werden Sie keine gerade 0 in Ihre Ausgaben bekommen.

+0

'(float) (5/9)' ist '0'. Sie machen zuerst die Integer Division und dann das Ergebnis in float. – esam

+0

Entschuldigung, ich meinte Typisierung der Zähler zuerst, so dass wäre '(float) 5/9 ' Vielen Dank für das Aufzeigen – Pragun

Verwandte Themen