c++ Fehleingaben abfangen (float und char)

*EDIT4* Alle Fehler gefunden! Dankesehr! Weitermachen! :D

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:
Ich hab mir den Code angeschaut, habe die Fehler gefunden, und lese unten in den ganzen Edits, dass du das alles selbst gefunden hast. Jetzt bin ich mit deinen unzähligen Edits SO durcheinander, dass ich nicht mal mehr selbst weiß was jetzt das eigentliche Problem war und ob es nun noch da ist. Könntest du es vielleicht nochmal schreiben ob du das Problem nun gelöst hast oder noch Probleme bestehen? :D
 
Danke für die Mühe. Am Ende habe ich selber noch eine Stunde draufgestarrt und die Fehler gefunden. Hatte diverse Deklaraktionen bei den Ungleichungen flasch und "=" statt "==" gesetzt. Und obendrauf noch einen Formelfehler. Einmal ausschlafen tat wohl Not^^
 
Zurück
Oben