if ... else



  • 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



  • "Neuerungen schon hat...."

    naja wieso neuerungen? also jedes C++ lernbuch das dem standard gerecht ist, sollte int anstatt void benutzen. der ANSI/ISO C++ Standard gibt es seit 1998. richtige dich hald dannach 🙂



  • man sollte meinen es sei so, aber in einem Kurs von "Computerbild" von 11/02 in "Programmieren (C++)", kommen die mit ihrem

    <iostream.h>
    
    void main
    

    Und das mit VC++, dacht das wär aktuell und richtig... (ich zweifel ja keine Medien an 🙄 )



  • naja scheiss auf die, die haben schlicht weg keinen plan...
    ich hab 1998 mein erstes C++ buch gekauft. das war "Jetzt lerne ich C++" von markt und technik link

    schaus dir mal an wenn du bock hast.



  • der normale Aufruf ist

    int main( int argc, char *argv[ ], char *envp[ ] )
    

    Denn die main funktion sollte nach guter Väter Sitte 0 zurückliefern falls das Programm fehlerfrei beendet wurde und einen Wert !=0 anderfalls.

    argc, argv, envp sind optional, falls man Kommandozeilenparameter und Environment im Programm benötigt, anderfalls kommt man ohne sie aus, sollte sie aber trotzdem deklarieren.

    Selbst in der heutigen Windowswelt mit

    int WINAPI WinMain(
      HINSTANCE hInstance,      // handle to current instance
      HINSTANCE hPrevInstance,  // handle to previous instance
      LPSTR lpCmdLine,          // command line
      int nCmdShow              // show state
    );
    

    ist diese Tradition fortgesetzt worden, zumindest was den Rückgabewert betrifft.

    Die Parameterliste ist leider ganz anders geworden.

    Da viele Mäuschenschupser weder Batch Dateien noch Scripting Sprachen (WSH, VB) einigermaßen kennen vergessen sie den Rückgabewert regelmäßig und machen somit die Processsteuerung unnötig schwierig (Leider hat MS$ hir auch massiv geschlampt und somit ein schlechtes Beispiel gegeben).
    😃

    Die Computerbild halte ich nicht gerade für ein Referenzwerk zur Programmierung

    Neben dem zugehörigen ANSII Standard ist "Herbert Schildt, C oder C++ the complete reference" zu empfehlen.
    Das gibts glaube ich auch auf Deutsch



  • der normale Aufruf ist

    int main( int argc, char *argv[ ], char *envp[ ] )
    

    Denn die main funktion sollte nach guter Väter Sitte 0 zurückliefern falls das Programm fehlerfrei beendet wurde und einen Wert !=0 anderfalls.

    argc, argv, envp sind optional, falls man Kommandozeilenparameter und Environment im Programm benötigt, anderfalls kommt man ohne sie aus, sollte sie aber trotzdem deklarieren.

    Selbst in der heutigen Windowswelt mit

    int WINAPI WinMain(
      HINSTANCE hInstance,      // handle to current instance
      HINSTANCE hPrevInstance,  // handle to previous instance
      LPSTR lpCmdLine,          // command line
      int nCmdShow              // show state
    );
    

    ist diese Tradition fortgesetzt worden, zumindest was den Rückgabewert betrifft.

    Die Parameterliste ist leider ganz anders geworden.

    Da viele Mäuschenschupser weder Batch Dateien noch Scripting Sprachen (WSH, VB) einigermaßen kennen vergessen sie den Rückgabewert regelmäßig und machen somit die Processsteuerung unnötig schwierig (Leider hat MS$ hir auch massiv geschlampt und somit ein schlechtes Beispiel gegeben).
    😃

    Die Computerbild halte ich nicht gerade für ein Referenzwerk zur Programmierung

    Neben dem zugehörigen ANSII Standard ist "Herbert Schildt, C oder C++ the complete reference" zu empfehlen.
    Das gibts glaube ich auch auf Deutsch


Anmelden zum Antworten