*EDIT4* Alle Fehler gefunden! Dankesehr! Weitermachen! 
Hallo, werte HaBo-community! Ich bin sehr sehr neu in C++ (vorletzte Woche angefangen) und habe ein logisches Problem: Wir sollen ein Programm für die Uni schreiben, das Temperatureingaben von Grad Celsius in Fahrenheit umwandeln kann und umgekehrt. Das ist alles kein Problem, nur soll es auch Fehleingaben abfangen können. Meine Erste Idee war, das über if, else Abfragen zu bewerkstilligen, aber irgendwie funktioniert das nicht wie gedacht und das Programm läuft fröhlich trotz Fehleingaben weiter. Recherche und Aufzeichnungen haben nichts Verwertbares zutage gefördert, weshalb ich mich nun an die erfahrenen Coder wende.
Ihr müsst ausdrücklich NICHT die Arbeit für mich machen, ich will einfach verstehen, wo mein Denkfehler ist!
Vielen Dank im Voraus!
*EDIT* die Fehlerprävention für meine float-Variablen funktioniert schon. Beim char habe ich noch Probleme!
*EDIT2* wow, ich bin wirklich müde. Die Variablenabfrage für den char-Wert funktioniert nicht und ich weiß nicht, warum... den rest habe ich immerhin schon selbst gelöst
Hier ist mein Code, der zwar funktioniert, aber aus irgendwelchen Gründen nicht das Richtige bei Fehleingaben ausgibt:
*Edit* - Code auch als Code dargestellt, Augenkrebs vorgebeugt.
*Edit2* Einen Fehler gefunden: if(a >= -459,67 || a>=10000000000000000) -> Schlafe wohl schon. "," durch ".", "||" durch "&&" und das zweite ">=" durch "<=" ersetzt.
*Edit3* einfache "=" durch "==" bei der char-Abfrage ersetzt
*Edit4* nach dem || noch ein c== eingefügt. Das anderes verwirrte den Compiler

Hallo, werte HaBo-community! Ich bin sehr sehr neu in C++ (vorletzte Woche angefangen) und habe ein logisches Problem: Wir sollen ein Programm für die Uni schreiben, das Temperatureingaben von Grad Celsius in Fahrenheit umwandeln kann und umgekehrt. Das ist alles kein Problem, nur soll es auch Fehleingaben abfangen können. Meine Erste Idee war, das über if, else Abfragen zu bewerkstilligen, aber irgendwie funktioniert das nicht wie gedacht und das Programm läuft fröhlich trotz Fehleingaben weiter. Recherche und Aufzeichnungen haben nichts Verwertbares zutage gefördert, weshalb ich mich nun an die erfahrenen Coder wende.
Ihr müsst ausdrücklich NICHT die Arbeit für mich machen, ich will einfach verstehen, wo mein Denkfehler ist!
Vielen Dank im Voraus!
*EDIT* die Fehlerprävention für meine float-Variablen funktioniert schon. Beim char habe ich noch Probleme!
*EDIT2* wow, ich bin wirklich müde. Die Variablenabfrage für den char-Wert funktioniert nicht und ich weiß nicht, warum... den rest habe ich immerhin schon selbst gelöst

Hier ist mein Code, der zwar funktioniert, aber aus irgendwelchen Gründen nicht das Richtige bei Fehleingaben ausgibt:
Code:
#include <iostream>;
using namespace std;
int main()
{
float a, b; //für Ausgangswert und Ergebnis (Fließkommazahl)
char c; //für die Richtung der Konversion (Buchstabe)
cout << "This program will try its best to convert Degree Celsius in Fahrenheit and vice versa" << endl;
cout << endl;
cout << "please enter a value (comma(.) allowed)" << endl;
cout << endl;
cin >> a;
if (a >= -459.67 && a<=1000000000000000 ) // check auf unsinnige Werte, Absoluter Nullpunkt in F und das Zehnfache des heißesten im LHC gemessenen Wertes in °C
{
cout << endl;
cout << "please enter the unit of the value you entered (C or F)" << endl;
cout << endl;
cin >> c; // Ascii: C=67, c=99; F=70; f=102
if (c == 67|| c==99)
{
b = (((9 / 5)*a) + 32); // Nach F umgestellte Gleichung
cout << "this converts to " << b << " F." << endl;
}
else if (c == 70|| c==102)
{
b = (((a - 32) * 5) / 9); // nach C umgestellte Gleichung
cout << "this converts to " << b << " °C" << endl;
}
else // um Fehleingaben bei den Einheiten abzufangen
{
cout << "please enter a viable parameter (c, C, f, F)" << endl;
}
}
else // um Fehleingaben bei den Zahlen abzufangen
{
cout << "please restart the program and enter a valid number (bigger than the absolute Zero and smaller than 10^15" << endl;
}
system("pause");
return 0;
}
*Edit* - Code auch als Code dargestellt, Augenkrebs vorgebeugt.
*Edit2* Einen Fehler gefunden: if(a >= -459,67 || a>=10000000000000000) -> Schlafe wohl schon. "," durch ".", "||" durch "&&" und das zweite ">=" durch "<=" ersetzt.
*Edit3* einfache "=" durch "==" bei der char-Abfrage ersetzt
*Edit4* nach dem || noch ein c== eingefügt. Das anderes verwirrte den Compiler
Zuletzt bearbeitet: