if ... else



  • hallo,
    bin am anfang der programmierung und wollt wissen wie ich die if und else Befehle nutzen kann.

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

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



  • Hinter cin>> fehlt eine Variable, in die eingelesen werden soll. (In dem Fall bietet sich natürlich "l" an. 😉 )

    Ausserdem ist der Code nicht ganz standardkonform, was die header, die main-Funktion und das Verwenden von getch() angeht.

    [edit]Machen wir's lieber ausführlich - richtiger wäre also:

    #include <iostream> //ohne Endung
    
    using namespace std; //dafür den Namensbereich angeben
    
    int main() //main() sollte einen Wert zurückgeben
    { 
    
        cout << "Wenn 1=war, bei 0=falsch ";
    
        int i(0); //Variable deklarieren und auch gleich mit 0 belegen
    
        cin  >>  l; //Variable hinzugefügt
    
        if (1 = 1) 
            cout << "Sie haben die 1 gewaehlt"; 
    
        else 
            cout << "Sie haben die 0 gedrueckt!"<<endl; //Das endl kann man auch anhängen
    
        //Auf Eingabe warten (Ersatz für "getch()")
        std::cin.clear (); 
        std::cin.ignore ( std::cin.rdbuf () -> in_avail () ); 
        std::cin.get (); 
    
        return 0; //Rückgabewert: Alles OK!
    }
    

    [edit2]Ups, deklarieren sollte man l auch



  • #include <iostream> //ANSI/ISO Standard: ohne dot h
    #include <conio.h>
    
    int main() //ANSI/ISO Standard: int anstatt void
    {
    
        int num; //siehe weiter unten.
        cout << "Wenn 1=war, bei 0=flasch "; //eventuell aussagekräftiger...? :-D
        cin  >> num; //hier fehlt eine int variable...
        if (num == 1) //die erste zahl durch die variable "num" ersetzen und da es ein vergleich und keine zuweisung ist,
                     //nehmen wir den C++ operator ==
        {
            cout << "Sie haben die 1 gewaehlt";
            getch(); //muss hier auch sein wie unten, sonst wird es hier einfach beendet
        }
        else
        {
            cout << "Sie haben die 0 gedrueckt!\n"; //und was wenn der benutzer die 3,4,5,6,7 oder sowas getippt hat?
        	//cout << endl; <-- braucht es nicht da im oberen cout ein \n reicht
        	getch();
        }
    }
    

    so auf die schnelle...



  • Danke für die Hilfe Leute,
    ging echt schnell ^^, und auch noch so ausführlich, thx!!



  • 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?


Anmelden zum Antworten