2x das gleiche, warum genau ist das eine besser?:)



  • Wenn das irgendeine Aufgabe ist, wo du was hinschreiben musst, dann würde ich nehmen:

    • kein break
    • in der Schleife nur Dinge, die wirklich in der Schleife sein müssen (win-test,...)

    Ansonsten schließe ich mich dem Rest an, der von beiden Varianten jetzt nicht unbedingt begeistert ist.



  • Danke für die schnellen Antworten 🙂

    @wob also wäre es besser int guess = 0; zu schreiben why?

    @SeppJ DANKE 😃 ;'D werde nochmal dran rumspielen

    @manni66 weil das erste nicht von mir ist^^

    @Jockelx danke:) warum kein break? ah danke ja, habs gemerkt hab bissi verkackt 🙂


  • Mod

    @YAAAH sagte in 2x das gleiche, warum genau ist das eine besser?:):

    @wob also wäre es besser int guess = 0; zu schreiben why?

    Welchen Wert hat guess in Zeile 8 bzw. 34, wenn es das erste Mal benutzt wird?

    @Jockelx danke:) warum kein break? ah danke ja, habs gemerkt hab bissi verkackt 🙂

    Es ist nicht direkt verkehrt, aber wenig elegant, weil unnötig schwer zu lesen. Deine Schleife erweckt den Eindruck, als wäre die Abbruchbedingung in Zeile 34, aber das stimmt halt gar nicht, weil die eigentliche Abbruchbedingung in Zeile 47 ist. (Modulo, dass dein Code falsch ist un die Bedingung in 47 daher nicht funktioniert, aber das ist dein Fehler, nicht deine Absicht.)



  • @SeppJ 0 oder Kauderwelsch ?:D aber hat funktioniert also ging ich von 0 aus o_o

    Ja x] hab den scheiß jetzt geändert, so sollte das 2. besser sein

    int secretNum = 7;
        int guess= 0;
        int guessCount = 0;
    
    
    while(secretNum != guess && guessCount < 3){
    
        cout << "Enter guess:  ";
        cin  >> guess;
    
        guessCount++;
    }
    
    
    
    if(guess == secretNum){
        cout << "You win! ";
    } else {
        cout << "You lose! ";
    
    }
    


  • Ich persönlich bevorzuge folgende Variante:

    for (int secretNum = 7, guess = 0, guessCount = 3; cout << "Enter guess: " && (cin >> guess || ((cout << "Fehlerhafte Eingabe!\n"), false)) && cout << (guess != secretNum ? "" : "You win!\n") && guess != secretNum && cout << (--guessCount < 1 ? "You lose!\n" : "") && guessCount > 0; );
    
    • Alle Variablen sind initialisiert
    • Kein break
    • Abbruchbedingung in der ersten Zeile
    • Macht was es soll
    • Fehlerbehandlung bei schlechter Eingabe
    • Nichts im Schleifenkörper, was nicht drin sein muss


  • @HarteWare sagte in 2x das gleiche, warum genau ist das eine besser?:):

    Ich persönlich bevorzuge folgende Variante:

    for (int secretNum = 7, guess = 0, guessCount = 3; cout << "Enter guess: " && (cin >> guess || ((cout << "Fehlerhafte Eingabe!\n"), false)) && cout << (guess != secretNum ? "" : "You win!\n") && guess != secretNum && cout << (--guessCount < 1 ? "You lose!\n" : "") && guessCount > 0; );
    
    • Maximale Lesbarkeit (kein vertikales Scrolling nötig) durch Verzicht auf Zeilenumbrüche
    • Weglassen von std:: für cin und cout vermeidet unnötigen Code-Bloat
    • Einsatz des ? :-Operators vermeidet inperformantes Branching eines if-Befehls
    • Lang gechainte und-Bedinungen stellen sicher, dass niemand aus der Reihe tanzt
    • Einsatz des ,-Operators stellt sicher, dass der Rückgabewert eines möglicherweise erfolgreichen cout bei fehlerhafter Eingabe nicht betrachtet wird

    😎 😱 👹



  • uff vielen dank, ich beschäftige mich damit mal ein bisschen 😃



  • wobei das horizontale scrollen mir komisch erscheint 😃



  • Das ist überhaupt nicht lesbar.



  • @YAAAH Das war eine humorvoll gemeinte Antwort, nicht wirklich ernst gemeint. Den Code brauchst Du nicht anschauen oder verstehen.
    @wob haha, der war gut

    Einsatz des ? :-Operators vermeidet inperformantes Branching eines if-Befehls


Anmelden zum Antworten