Newbie frage =)



  • //---Bibiotheken einfügen---
    
    #include <iostream.h>
    #include <iomanip.h>
    #include <conio.h>
    
    //---Hauptprogramm---
    
    int main()
    {
    
    char auswahl;
    
    cout << "Bitte auswaehlen:";
    cout << "\ta = Programmende\n" << "\tb = Program nochmals ausfuehren\n";
    
    if(auswahl != 'a' || auswahl != 'b')
     cout << "bitte waehlen sie das richtige aus!"
    
    switch(auswahl)
     case 'a':
     case 'A': return 0;
     break;
    
     case 'b':
     case 'B':
    
    getch();
    return 0;
    }
    

    meine frage ist nun folgende. Ich möchte das als bsp. sofern eine person nicht a oder b wählt das cout auftaucht und dann nochmal die abfrage von 'a' oder 'b' kommt.
    und bei 'b' das Programm immer wiederholt wird. Also wieder abfrage 'a' oder 'b'.
    Mein Problem ist also auf deutsch gesagt, ich habe keine ahnung wie man etwas wiederholen lässt.
    kann mir das jemand helfen plz?
    wäre echt nice 😃

    MfG Lazare

    Ps.: ich weiß, mehr // <<<--- nutzen =p



  • Mal davon abgesehen, dass du einen Strichpunkt (';') hinter deinem cout und die geschweiften Klammern beim switch vergessen hast, solltest du dir mal die Funktionsweise von:

    while()
    {
    ...
    }
    
    do
    {
    }while();
    
    for(;;)
    {
    }
    

    ansehen. Das nennt man übrigens Schleife, da es sich wiederholt. Zwischen den ()-Klammern schreibst du deine Bedingung (wie bei einem if) und zwischen den {}-Klammern schreibst du die Befehle, die immer wieder ausgeführt werden sollen. Zwischen while() und do{}while() gibt es einen kleinen entscheidenden Unterschied. Bei der ersten wird sofort die Bedingung geprüft, bei der zweiten erst am Ende, d. h. bei do{}while() werden die Befehle innerhalb von {} mindestens einmal ausgeführt.

    So und nun viel Spaß beim Endlosschleifen programmieren 😉 🤡



  • //---Bibiotheken einfügen---
    
    #include <iostream.h>
    #include <iomanip.h>
    #include <conio.h>
    
    //---Hauptprogramm---
    
    int main()
    {
    
    int loop;
    char auswahl;
    
    for(loop = 0; loop < 10; loop = loop + 1)
    {
      cout << "Bitte waehlen:\n";
      cout << "\ta = abbrechen\n" << "\tb = wiederholen\n";
      cin  >> auswahl;
    
       if(auswahl != 'a' || auswahl != 'b')
        {
         cout << "bitte waehlen zwischen 'a' oder 'b'!\n";
        }
       else
       {
         switch(auswahl == 'a' || auswahl == 'b')
         {
          case 'a':
          case 'A': return 0;
          case 'b':
          case 'B': 
         }
       }
    }
    
    getch();
    return 0;
    }
    

    hmmm.. irgendwie geht das mit der if anweisung nicht...
    er gibt immer aus "bitte waehlen zwischen 'a' oder 'b'!", dabei soll er es ja nur ausgeben wenn nicht 'a' oder 'b' eingegeben wird... was ist da falsch dran?
    und eine weitere frage von mir ist warum er bei 'a' o. 'A' nicht das Programm beendet...

    thx nochmal im voraus...

    btw. thx AJ 4 help vorhin 🙂

    MfG Lazare



  • naja, dann schau dir mal deine Bedingung vom If-Zweig nochmal genauer an:

    'a' != 'a' || 'a' != 'b'   -> false || true  = true
    'b' != 'a' || 'b' != 'b'   -> true           = true
    
    X != 'a' || X != 'b'       -> true           = true; X ist ein beliebiger Buchstabe
    

    Versuch das ganze mal mit ner UND-Verknüpfung.

    Was mir auch noch auffällt:

    switch(auswahl == 'a' || auswahl == 'b')
    {
    case 'a':
    ...
    }
    

    Du testest hier, ob ein Wahrheitswert gleich einem Buchstaben (eigentlich int-Wert) ist
    muss so heissen:

    switch(auswahl)
    

    mfg
    Martin



  • Vielen dank 😃 *Freu*

    allerdings verstehe ich nicht genau warum ich '&&' setzen muss.
    ich sage doch,
    überprüfe ob 'a' ODER (||) [<<<--- stimmt das??] 'b'
    wenn ja dann...
    sonst gib aus...

    warum setze ich also das UND und nicht ODER?

    *nichtsBlick*
    und gleich meine nächste frage, davon ausgehend das ich die mit 'und' und 'oder' verstehe...
    wann setze ich dann '||' bzw. was erreiche ich damit?

    MfG Lazare



  • Das '&&' ist das logische UND, das '||' ist das logische ODER. Es gibt auch noch '!', das ist die logische Negation.
    Ein kleines Beispiel aus der Logik (die hat übrigens auch was mit Mathe zu tun), sowas nennt man Wahrheitstabelle:

    1 steht für WAHR, 0 für FALSCH
    
    A | B | A&&B | A||B | (!A)||(!B)
    --+---+------+------+-----------
    0 | 0 |  0   |  0   |   1       
    0 | 1 |  0   |  1   |   1       
    1 | 0 |  0   |  1   |   1       
    1 | 1 |  1   |  1   |   0
    

    Nochmal zur Erläuterung:
    Logisches UND bedeutet: nur wenn A UND B WAHR sind, ist auch A&&B WAHR
    Logisches ODER bedeutet: wenn A ODER B WAHR sind, ist A||B WAHR
    Logische Negation heisst: wenn A WAHR ist ist !A FALSCH

    Das Ganze kann man beliebig kombinieren. Irgendwo bei diesen Kombinationen ist dann auch dein Problem mit der Abfrage zu suchen.
    Und jetzt viel Spaß beim munteren ODERn und UNDen 😃



  • muhaha ich habs glaub begriffen =). aber ich will das ja nciht so laut sagen, sonst kommt noch irgend einer auf dem dummen gedanken mir ne aufgabe zu stellen ^^ =P.
    ich goa mal weiter schaffe =)...

    MfG Lazare



  • Leichter verständlich wäre es vielleicht, wenn du die
    Bedingungen "umdrehst":

    if (auswahl == 'a' || auswahl == 'b')
        {
            switch(auswahl)
            ...
        }
        else
        {
        cout << "bitte waehlen zwischen 'a' oder 'b'!\n";
        }
    

Anmelden zum Antworten