Buchstaben abfragen



  • Hi leutz, hier mein Problem:

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	char letter;
    
    	cout<<"-Addition von 2 Zahlen | a"<<endl;
    	cout<<"-Subtraktion von 2 Zahlen | s"<<endl;
    	cout<<"-Multiplikation von 2 Zahlen | m"<<endl;
    	cout<<"-Division von 2 Zahlen | d"<<endl;
    	cin>>letter;
    	cin.get();
    
    	if(letter == a)
    	{
    		int zahl1, zahl2, ergebnis;
    		cout<<"Geben Sie die beiden Zahlen, durch ein Leerzeichen getrennt, ein: ";
    		cin>>zahl1;
    		cin>>zahl2;
    		ergebnis=zahl1+zahl2;
    		cout<<"Das Ergebnis lautet: "<<ergebnis<<endl;
    		cin.get();
    	}
    	else if(letter == s)
    	{
    		int zahl1, zahl2, ergebnis;
    		cout<<"Geben Sie die beiden Zahlen, durch ein Leerzeichen getrennt, ein: ";
    		cin>>zahl1;
    		cin>>zahl2;
    		ergebnis=zahl1-zahl2;
    		cout<<"Das Ergebnis lautet: "<<ergebnis<<endl;
    		cin.get();
    	}
    	else if(letter == m)
    	{
    		int zahl1, zahl2, ergebnis;
    		cout<<"Geben Sie die beiden Zahlen, durch ein Leerzeichen getrennt, ein: ";
    		cin>>zahl1;
    		cin>>zahl2;
    		ergebnis=zahl1*zahl2;
    		cout<<"Das Ergebnis lautet: "<<ergebnis<<endl;
    		cin.get();
    	}
    	else if(letter == d)
    	{
    		int zahl1, zahl2, ergebnis;
    		cout<<"Geben Sie die beiden Zahlen, durch ein Leerzeichen getrennt, ein: ";
    		cin>>zahl1;
    		cin>>zahl2;
    		ergebnis=zahl1/zahl2;
    		cout<<"Das Ergebnis lautet: "<<ergebnis<<endl;
    		cin.get();
    	}
    
    	cout<<"Danke für Ihr Vertrauen!"<<endl;
    	cin.get();
    }
    

    Jetzt spuckt er mir diese Fehler aus:

    Fehler	1	error C2065: 'a': nichtdeklarierter Bezeichner	
    Fehler	2	error C2065: 's': nichtdeklarierter Bezeichner		
    Fehler	3	error C2065: 'm': nichtdeklarierter Bezeichner	
    Fehler	4	error C2065: 'd': nichtdeklarierter Bezeichner
    

    Was nu?


  • Administrator



  • if(letter == "a")
    

    Switch-Case ist hierfür geeigneter, aber wenn es nur zum Üben ist.
    Ob man das cin.get() nach ein Eingabe und nach der Ausgabe schreiben muss ....

    Diese ständigen Wiederholungen sind unschön, probiere es mal mit Switch-Case, wenn du denn schon so weit bist.

    Formatierung: Leerzeichen sind auch übersichtlicher zwischen den Bezeichnern, Operanden und Operatoren. Gewöhne es dir an, bei langem Code wirst du es dir selber danken.



  • Cache schrieb:

    if(letter == "a")
    

    Würde dann den nächsten Fehler geben, á la 'no match for operator== in letter == "a"' ->

    if (letter == 'a')
    


  • /eidt: doppelpost dank lag 😉



  • Bei der Division solltest du prüfen, ob zahl2!=0 ist, um eben eine Division durch 0 zu verhindern.

    EDIT: Außerdem wäre es zumindest bei der Division ratsam, deine Variablen als Typ float oder double zu deklarieren (es sei denn, du willst tatsächlich eine Ganzzahlendivision durchführen, ich denke aber eher nicht).


Log in to reply