Rechner schreiben -> if problem



  • Hallo zusammen
    bin neu hier und bin auch noch ein anfänger was c++ angeht.

    habe so zum anfang einen kleinen rechner geschrieben, aber habe den ganze forum und google durchsucht, leider kein erfolg.

    #include <iostream>
    using namespace std;
    int main()
    {
    	int zahl1;
    	int zahl2;
    	char op[2];
    	cout <<"erste Zahl eingeben!" <<  endl;
    	cin >>zahl1;
    	cout <<"Operationszeichen eingeben! -> +,-,*,/" <<  endl;
    	cin >>op[1];
    	cout <<"zweite Zahl eingeben!" <<  endl;
    	cin >>zahl2;
    	if (op == "+")
    	{
    		cout << zahl1 + zahl2 <<  endl;
    	}
    	if (op == "-")
    	{
    		cout << zahl1 - zahl2 <<  endl;
    	}
    	if (op == "*")
    	{
    		cout << zahl1 * zahl2 <<  endl;
    	}
    	if (op == "/")
    	{
    		cout << zahl1 / zahl2 <<  endl;
    	}
    	return 0;
    }
    

    habe den rechner kompiliert und getestet, aber habe keine ausgabe bekommen nach dem if.

    danke im voraus 🙂



  • du machst zwei fatale fehler:
    1. char op[2] erzeugt platz für 2 chars. Du ließt den char in op[1] ein. Das erste zeichen ist aber op[0].
    Zweitens kannst du einen pointer nicht mit einem string literal vergleichen. Da musst du strcmp benutzen.

    Am besten wäre es aber, wenn du std::string benutzt. Dann läuft dsa ganze intuitiver:

    #include <iostream>
    #include <string>
    using namespace std;
    int main()
    {
        int zahl1;
        int zahl2;
        string operator;
        cout <<"erste Zahl eingeben!" <<  endl;
        cin >>zahl1;
        cout <<"Operationszeichen eingeben! -> +,-,*,/" <<  endl;
        cin >>op;
        cout <<"zweite Zahl eingeben!" <<  endl;
        cin >>zahl2;
        if (op == "+")
        {
            cout << zahl1 + zahl2 <<  endl;
        }
        if (op == "-")
        {
            cout << zahl1 - zahl2 <<  endl;
        }
        if (op == "*")
        {
            cout << zahl1 * zahl2 <<  endl;
        }
        if (op == "/")
        {
            cout << zahl1 / zahl2 <<  endl;
        }
        return 0;
    }
    

    In dem Falle könntest du statt string auch char nehmen und mit '+' (usw) vergleichen (aber nicht "+" ! )



  • edit: statt string operator; muss es natürlich string op; heißen!



  • thx für die schnelle und klare hilfe ^^



  • #include <iostream>
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    int main()
    {
        int zahl1;
        cout <<"erste Zahl eingeben!" <<  endl;
        cin >>zahl1;
    
        char op;
        cout <<"Operationszeichen eingeben! -> +,-,*,/" <<  endl;
        cin >>op;
    
        int zahl2;
        cout <<"zweite Zahl eingeben!" <<  endl;
        cin >>zahl2;
    
        int ergebnis(zahl1);
        switch(op)
        {
            case '+':
                ergebnis += zahl2; break;
            case '-':
                ergebnis -= zahl2; break;
            case '*':
                ergebnis *= zahl2; break;
            case '/':
                ergebnis /= zahl2; break;
            default:
                cout << "falsche eingabe!"; return 1;
        }
    
        cout << ergebnis << endl;
    }
    

    bb


Anmelden zum Antworten