if ... else



  • krass wie ihr beide kein einfaches if-else im kopf abwickeln koennt. bekraeftigt mich in meiner empfehlung, auch bloecke aus einzelnen anweisungen zu umklammern.

    if(){
        do1();
    }else{
        do2();
    }
    


  • Sind die "do" Befehle wichtig, oder kann man die auch weglassen.

    Bei mir funzt auch dieses

    #include <iostream.h>
    #include <conio.h>
    
    void main()
    {
    
        float   zahl;
    	cout << "Wenn 1=war, bei 0=flasch ";
    	cin  >> zahl ;
    
    	if (zahl == 1)
    		cout << "Sie haben die 1 gewaehlt";
    
    	else
    	    cout << "Sie haben die 0 gedrueckt";
    
    	cout << endl;
    
        getch();
    }
    

    was mirdiewarscheinlich die einfachste Form, von if und else ist.



  • 1. mein post war am wenigsten an dich gerichtet.
    2. dass was funzt heisst nicht, dass es richtig ist.
    3. die do befehle sind beispiele
    4. lies dir tdkbackes hinweise durch (.h, conio, void main).
    5. mein post war auch an dich gerichtet, also mach die klammern lieber rein, siehst ja, wie das gleich zweimal fehlinterpretiert wurde, und wir wollen doch einfach lesbaren code erzeugen, nicht wahr?



  • TDKBacke schrieb:

    ...

    int i(0); //Variable deklarieren und auch gleich mit 0 belegen
    
    cin  >>  l; //Variable hinzugefügt
    
    if (1 = 1)
    

    ...

    *kopfschüttel*



  • PeterTheMaster schrieb:

    krass wie ihr beide kein einfaches if-else im kopf abwickeln koennt.

    Auch wenn der Titel des Beitrags etwas anderes suggeriert, geht es hier nicht um if-else. Es wurde eher gefragt, warum der Compiler meckert. Der Grund war die fehlende Variable und diese habe ich dann schnell hinzugefügt und noch die typischen Kleinigkeiten ausgebessert (iostream.h, void main). Die eigentliche if-else-Sache habe ich ungesehen kopiert - was im Nachhinein gesehen natürlich ein Fehler war.

    @MaSTaH:
    Ich kann Körpersprache so schlecht deuten, könntest du bitte noch ein paar Worte folgen lassen. Ich habe da zwar so eine Ahnung ...



  • ich glaube er meint das

    int i(0);
    
    cin  >>  l; //hier muss doch i hin
    
    if (1 = 1) // hier muss stehen i == 1
    


  • PeterTheMaster schrieb:

    krass wie ihr beide kein einfaches if-else im kopf abwickeln koennt.

    if(){
        do1();
    }else{
        do2();
    }
    

    Bitte? Was ist den an meiner lösung nicht gut?



  • tYel schrieb:

    Bekommt immer 2 Fehler angezeigt, weiss aber nicht wo die liegen.
    Bitte helft mir.... 😞 bei der Lösung 😋

    Vielleicht für ein nächstes mal: Schreib auch noch hin WAS FÜR FEHLER DIR ANGEZEIGT WERDEN. Dann wird dir - beim Lesen der Fehlermeldung und gleichzeitigem Betrachten der betroffenen Zeile vermutlich automatisch was auffallen...

    -junix



  • danke mitllerweile hab ichs auch hinbekommen, und wenns läuft ist es doch richtig. Nehm ich ma an.

    wollt jetzt nur wissen, was wenn ich eine andere taste betätig (z.B. a,6,...), das das programm sich schliesst oder nichts unternimmt,

    #include <iostream.h>
    #include <conio.h>
    
    void main()
    {
    
        int   zahl;
    	cout << "Wenn 1=war, bei 0=falsch ";
    	cin  >> zahl ;
    
    	if   (zahl == 1)
    		  cout << "\nSie haben die 1 gewaehlt\n";  // ok die \n haet ich mir uach sparen können
                                                       // sieht dann am Bildschirm besser aus
    	else
    
    	cout << "\nSie haben die 0 gedrueckt\n";
    	cout << endl;
    
        getch();
    }
    


  • tYel schrieb:

    und wenns läuft ist es doch richtig.

    Eben nicht! (Das wurde auch schon einmal gesagt. Wie viele andere Sachen auch (iostream ohne Endung, int main() statt void main usw.). Es wirkt so, als würdest du nicht sehr aufmerksam lesen.)

    Alle Fälle erfasst man, indem man verschachtelt:

    if   (zahl == 1) cout << "Sie haben die 1 gewaehlt.";
        else if (zahl==0) cout << "Sie haben die 0 gedrueckt.";
            else cout<<"Sie haben weder die 0, noch die 1 gedrueckt.";
    

    [edit] switch wäre für soetwas übrigens geeigneter. [/edit]



  • #include <iostream.h>
    #include <conio.h>
    
    int main()
    {
        char input;
        cout << "Bitte geben Sie einen buchstaben oder eine zahl ein: ";
        cin  >> input;
        switch(input)
        {
            case 'a':
            cout << "Sie haben " << input << " gewaehlt. Programm tut nun nichts :-)";
            getch();
            break;
    
            case 'b':
            cout << "Sie haben " << input << " gewaehlt. Programm tut nun nichts :-)";
            getch();
            break;
    
            case '6':
            cout << "Sie haben " << input << " gewaehlt. Programm tut nun nichts :-)";
            getch();
            break;
    
            case '7':
            cout << "Sie haben " << input << " gewaehlt. Programm tut nun nichts :-)";
            getch();
            break;
        }
    }
    


  • und jetzt die hardcore schwere lösung (zur vollstädingkeit):

    #include <iostream>
    using namespace std;
    
    int main() {
      int x; 
      cout << "Wenn 1=war, bei 0=flasch ";
      cin >> x;
      if (x < 0 || x > 1) {
        cout << "Bäh" << endl;
        return 1;
      }
      cout << "Sie haben die " << x << "gewaehlt" << endl;
      cout << "Das entspricht: ";
      if (x == 0)
        cout << "war" << endl;
      else
        cout << "flasch" << endl;
    }
    

    (ohne gewehr auf funktionalität)



  • zieh dir aber besser mal ein C++ buch rein. wenn du so splitter fragen hier stellst, wirste die programmiersprache C++ nie wirklich lernen. ein buch sagt mehr als tausend worte! 😃 😃 yo echt, weils 20x so viele wörter drin hat hehehe... 🙄



  • TDKBacke schrieb:

    @MaSTaH:
    Ich kann Körpersprache so schlecht deuten, könntest du bitte noch ein paar Worte folgen lassen. Ich habe da zwar so eine Ahnung ...

    Naja, vielleicht hast du eine Schriftart eingestellt in der sich i, l und 1 nicht so doll unterscheiden. Es ist wie bummi_office gesagt hat: Du deklarierst i, liest l ein und weist dann nachher an der Stelle wo die Bedingung stehen sollte der Zahl 1 eine 1 zu 😉 .



  • MaSTaH schrieb:

    [...] l und 1 nicht so doll unterscheiden.

    Erstens das - genau genommen sind 1 und l in der Schriftart identisch - und zweitens habe ich beim zweiten Editiervorgang instinktiv das i benutzt. Macht der Gewohnheit.

    und weist dann nachher an der Stelle wo die Bedingung stehen sollte der Zahl 1 eine 1 zu 😉 .

    Wie schon erwähnt: Diesen Teil habe ich nur kopiert. (Was natürlich keine Entschuldigung ist - sowas müsste selbst beim beiläufigen Kopieren auffallen. Tut ja weh in den Augen.)

    @!CoDER!:
    Google mal nach default, du Witzbold!



  • TDKBacke schrieb:

    @!CoDER!:
    Google mal nach default, du Witzbold!

    machs doch selber. was passt dir den an meinem code nicht zu witzbold?



  • switch(input) 
        { 
            case '0': 
              break; 
    
            case '1': 
             break; 
            default:   // Alles andere als 0 oder 1
            break; 
        } 
    }
    


  • TDKBacke schrieb:

    tYel schrieb:

    und wenns läuft ist es doch richtig.

    Eben nicht! (Das wurde auch schon einmal gesagt. Wie viele andere Sachen auch (iostream ohne Endung, int main() statt void main usw.). Es wirkt so, als würdest du nicht sehr aufmerksam lesen.)

    sicher les ich aufmerksam die Beiträge zu "meinem" Thema nur in allen Tutorials wird

    void main()
    

    benutzt

    du sagtst mir aber, ich soll

    int main..
    

    schreiben. Wo ist denn da die Logik?





  • Danke dir "TDKBacke", mir das zu erklähren ist wohl genauso schwer wie den schweinen das fliegen beizubringen 😃

    Kennt ihr vielleicht ein C++ Buch das diese Neuerungen schon hat?
    (<iostream> int main, ....)

    Damit ich euch nicht so dumme fragen zu stellen brauch. Und das Grund Wissen vom Buch erlern.

    MFG_tYel


Anmelden zum Antworten