[C/C++] Schleife mit enum, wie Variablenwert erhöhen ?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Proco, 30. Oktober 2011 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 30. Oktober 2011
    Schleife mit enum, wie Variablenwert erhöhen ?

    Hallo Leute,

    mein Programm soll die typischen Skat-Spielkarten ausgeben in absteigender Reihenfolge:

    Kreuz As
    Pik As
    Herz As
    Karo As
    Kreuz Koenig
    Pik Koenig
    Herz Koenig
    Karo Koenig
    Kreuz Dame
    usw.

    Mein Code:
    Code:
    
    /*
     * spielkarten.cpp
     *
     * Definiert Wert und Farbe von Spielkarten als 
     * Aufzaehlungstyp und gibt alle Spielkarten in 
     * absteigender Reihenfolge aus 
     * 
     */
    
    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    int main()
    {
     enum wert {Sieben, Acht, Neun, Zehn, Bube, Dame, Koenig, As};
     enum farbe {Karo, Herz, Pik, Kreuz};
    
     // Hier bitte die Schleifen fuer die Ausgabe einfuegen
    
     for (wert a=As; a>=Sieben;) {
     for (farbe b=Kreuz; b>=Karo;) {
     switch (b) {
     case Kreuz: cout << "Kreuz "; break;
     case Pik: cout << "Pik "; break;
     case Herz: cout << "Herz "; break;
     case Karo: cout << "Karo "; break;
     }
     }
    
     switch (a) {
     case As: cout << "As "; break;
     case Koenig: cout << "Koenig "; break;
     case Dame: cout << "Dame "; break;
     case Bube: cout << "Bube "; break;
     case Zehn: cout << "Zehn "; break;
     case Neun: cout << "Neun "; break;
     case Acht: cout << "Acht "; break;
     case Sieben: cout << "Sieben "; break;
     }
     }
     
     
    
     system("pause");
     return 0;
    }
    
    Mein Frage: So komme ich zu einer Endlosschleife wo mir ständig das Wort "Kreuz" ausgegeben wird. Ich weiß auch warum. Nur weiß ich nicht, wie ich bei einer Enumeration den Zähler erniedrige. Wie bei üblichen for Schleifen mit a=a-1 geht es ja hier nicht.

    Danke!
     

  2. Anzeige
    Heute: Deals & Sale mit stark reduzierten Angeboten finden.
  3. #2 30. Oktober 2011
    AW: Schleife mit enum, wie Variablenwert erhöhen ?

    Also erst einmal...

    Beim Skat ist die 10 zwischen dem Ass und dem König eingeordnet ;)


    Code:
    int main()
    {
     enum wert {Sieben, Acht, Neun, Zehn, Bube, Dame, Koenig, As};
     enum farbe {Karo, Herz, Pik, Kreuz};
    
     // Hier bitte die Schleifen fuer die Ausgabe einfuegen
    
     for (wert a=As; a>=Sieben; [COLOR="DarkRed"][B]--a[/B][/COLOR])
     { }
    
    
    
    Sollte durchaus funktionieren...
     
  4. #3 31. Oktober 2011
    AW: Schleife mit enum, wie Variablenwert erhöhen ?

    also wenn ich a=a-1 bzw. b=b-1 an der entsprechenden Stelle eingebe kommt folgende Fehlermeldung

    error C2440: '=': 'int' kann nicht in 'main::farbe' konvertiert werden

    und

    error C2440: '=': 'int' kann nicht in 'main::wert' konvertiert werden
     
  5. #4 31. Oktober 2011
    AW: Schleife mit enum, wie Variablenwert erhöhen ?

    Hatte mich vertan...

    Code:
    enum wert {Sieben, Acht, Neun, Zehn, Bube, Dame, Koenig, As};
    for ([COLOR="DarkRed"]int[/COLOR] i = As; i >= Sieben; --i)
    
    Jedoch sollte das jetzt dein Problem lösen:

    Code:
    enum wert {Sieben, Acht, Neun, Zehn, Bube, Dame, Koenig, As};
    for(wert i = As; i >= Sieben; i = static_cast<wert>(i-1)){
     switch(i){
     case As:
     case Koenig:
     }
    }
     

  6. Videos zum Thema
Die Seite wird geladen...