If-else



  • Hallo, ich sollte das Programm schreiben

    #include <iostream>
    using namespace std;
    
    int main() {
        bool p,q;
        cout << "Erster Wahrheitswert: ";
        cin >> boolalpha >> p;
        cout << "Zweiter Wahrheitswert: ";
        cin >> q;
        cout << "Das Ergebnis der Exklusiv-Oder-Verknüpfung lautet: ";
        switch (p) {
            case false :
                switch (q) {
                    case false :
                        cout << "Falsch";
                    break;
                    case true :
                        cout << "Wahr";
                    break;
                }
            break;
            case true :
                switch (q) {
                    case false :
                        cout << "Wahr";
                    break;
                    case true :
                        cout << "Falsch";
                    break;
                }
            break;
        }
        cout << endl;
        return 0;
    }
    

    aber lese gerade, dass das ganze mit einer if-Anweisung funktionieren muss. Kann mir dabei jemand helfen? Danke



  • if(p && !q || !p && q)
        cout << "Wahr";
    else
        cout << "Falsch";
    


  • Du kannst switch aber kein if? 😃
    Na ja, wenn wir schon bei exklusiv-oder sind, wie sieht's denn hiermit aus?

    if (p ^ q)
    


  • std::cout << std::boolapha << p ^ q << std::endl;



  • unskilled schrieb:

    std::cout << std::boolapha << p ^ q << std::endl;

    Kein if, 6, setzen. 🤡



  • Nee leider kapier ich das mit dem if nicht so wirklich 😃
    Trotzdem danke für eure Hilfe


  • Mod

    Brain91 schrieb:

    Nee leider kapier ich das mit dem if nicht so wirklich 😃
    Trotzdem danke für eure Hilfe

    Und wenn ich es so schreibe?

    if(p and not q or  not p and q)
    

    oder auch so?

    if((p and (not q)) or  ((not p) and q))
    

  • Mod

    314159265358979 schrieb:

    if(p && !q || !p && q)
        cout << "Wahr";
    else
        cout << "Falsch";
    

    das geht auch einfacher

    if(p != q)
        cout << "Wahr";
    else
        cout << "Falsch";
    

    wobei diese Variante nicht mehr funktionieren muss, falls nicht mit bools gearbeitet wird.

    cooky451 schrieb:

    unskilled schrieb:

    std::cout << std::boolapha << p ^ q << std::endl;

    Kein if, 6, setzen. 🤡

    7, denn es fehlen auch noch Klammern.



  • Ohne bools würde man dann so etwas schreiben:

    if(!!p^!!q)
    


  • gemeint war wohl

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	bool p,q;
    	cout << "Erster Wahrheitswert: ";
    	cin >> boolalpha >> p;
    	cout << "Zweiter Wahrheitswert: ";
    	cin >> q;
    	cout << "Das Ergebnis der Exklusiv-Oder-Verknüpfung lautet: ";
    	if(p)
    	{
    		if(q)
    		{
    			cout << "Falsch";
    		}
    		else
    		{
    			cout << "Wahr";
    		}
    	}
    	else
    	{
    		if(q)
    		{
    			cout << "Wahr";
    		}
    		else
    		{
    			cout << "Falsch";
    		}
    	}
    	cout << endl;
    	return 0;
    }
    


  • Ich soll jetzt hier nochmal was umschreiben

    #include <iostream>
    using namespace std;
    
    int main() {
        unsigned short a,b;
        cout << "Erste Ziffer (1..3): ";
        cin >> a;
        cout << "Zweite Ziffer (1..3): ";
        cin >> b;
        if (0 == a || 0 == b || a > 3 || b > 3)
            cout << "Unzulaessige Eingabe, Programm beendet."
                 << endl;
        else {
            if (1 == a) {
                if (1 == b)
                   cout << "Elf";
                if (2 == b)
                    cout << "Zwoelf";
                if (3 == b)
                    cout << "Dreizehn";
            }
            if (2 == a) {
                if (1 == b)
                   cout << "Einundzwanzig";
                if (2 == b)
                    cout << "Zweiundzwanzig";
                if (3 == b)
                    cout << "Dreiundzwanzig";
            }
            if (3 == a) {
                if (1 == b)
                   cout << "Einunddreissig";
                if (2 == b)
                    cout << "Zweiunddreissig";
                if (3 == b)
                    cout << "Dreiunddreissig";
            }
        }
        return 0;
    }
    

    in switch

    habe ich das :

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main() {
        unsigned short a,b;
        cout << "Erste Ziffer (1..3): ";
        cin >> a;
        cout << "Zweite Ziffer (1..3): ";
        cin >> b;
        switch(a)
    
         {
          case '1': cout <<  (1 == a); break;
          case '2': cout <<   (1 == b)
                    << "Elf"; break;
          case '3':  cout <<    (2 == b)
                     << "Zwoelf"; break;
          case '4': cout <<     (3 == b)
                     << "Dreizehn"; break;
    
           case '5': cout << (2 == a); break;
           case '6': cout << (1 == b)
                    << "Einundzwanzig"; break;
           case '7': cout << (2 == b)
                     << "Zweiundzwanzig"; break;
           case '8': cout << (3 == b)
                     << "Dreiundzwanzig"; break;
    
            case '9': cout << (3 == a); break;
            case '10': cout << (1 == b)
                    << "Einunddreissig"; break;
            case '11': cout << (2 == b)
                     << "Zweiunddreissig"; break;
            case '12':cout << (3 == b)
                     << "Dreiunddreissig"; break;
    
            }
        }
    

    aber da passiert nichts

    if (0 == a || 0 == b || a > 3 || b > 3)
            cout << "Unzulaessige Eingabe, Programm beendet."
                 << endl;
    

    und den Teil weiß ich nicht, wie und wo ich den einfügen soll 😕



  • Du hast die Drölfundzwanzig vergessen.



  • 314159265358979 schrieb:

    Du hast die Drölfundzwanzig vergessen.

    ein posting sinnloser als das andere.
    von dir kommt nur müll junge.



  • Das switch ersetzt bei deinem ersten Programm den else Zeig deiner Bereichsabfrage. Es ersetzt das if (1 == a) { ...

    Wann wird dein a denn jemals 4 oder 5 oder ... 12?



  • Deine Fehler:
    - Du vergleichst mit Chars, nicht mit Ints (Zahlenwerten)
    - Du vergleichst a, das nur den Wert 1 bis 3 haben soll, mit Werten von 1 bis 12
    - Du vergleichst b gar nicht
    - Du gibst seltsame Bool-Abfragen mit cout aus (?)

    Für den Anfang des codes schlage ich dir das hier vor:

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main() {
        unsigned short a,b;
        cout << "Erste Ziffer (1..3): ";
        cin >> a;
        cout << "Zweite Ziffer (1..3): ";
        cin >> b;
        unsigned short number = a*10 + b;
        // switch(number) ...
    

Anmelden zum Antworten