array mit bool werten



  • hallo!

    ich bin ein c++ anfänger und programmiere gerade zur übung dieses spielchen nach, wo man abwechselnd oben ein steinchen reinschmeißen muss und man eine reihe von 4 steinchen erreichen muss. an einer stelle ist folgende frage aufgetaucht:
    angenommen ich habe ein array von boolwerten. ich will nun alle werte darin mit && verbinden. man kann das natürlich per hand tun:
    boolarray[0] && boolarray[1] && ...
    aber das ist natürlich der falsche weg, weil möglicherweise viel zu schreiben und im nachhinein schwer zu modifizieren. gibt es eine anweisung hierfür wie das automatisch geht?



  • Das kannst du mit einer Schleife implementieren.



  • etwa so?

    bool arrayund(bool boolarray)
    {
     int arraylänge = sizeof(boolarray)/sizeof(bool);
     for(int i = 0; i < arraylänge; i++)
     {
      if(!boolarray[i])
       return false;
     }
     return true;
    }
    

    in meinem programm wäre das aber noch mehr schreibarbeit, deshalb wollte ich wissen, ob es auch eine einfache anweisung dafür gibt.



  • Ja, so in etwa geht das.

    btw:
    Deutsche Namen gehen gerade noch, aber Umlaute?

    int arraylaenge = sizeof(boolarray)/sizeof(bool);
    

    Wenn, dann so, oder am besten gleich Englische Namen.

    EDIT:
    Standardisiert (2.10) für die Bezeichnern sind lediglich a-zA-Z0-9 und _.
    Also keine Umlaute, Sonderzeichen o.ä. Also benutze auch keine!



  • Da gibt es unzählige Möglichkeiten. Hier was ganz altes von mir:

    class Stellung
    {
    private:
    	Farbe brett[9][8];//jeweils 2 mehr für den Todesrand
    	int hoehe[9];
    ...
    
    int Stellung::pruefung(Farbe farbe,int x,int y,int deltax,int deltay) const
    {
       int anzahl=0;
       x+=deltax;
       y+=deltay;
       while(brett[x][y]==farbe)
       {
          ++anzahl;
          x+=deltax;
          y+=deltay;
       }
       return anzahl;
    }
    int Stellung::pruefungNO(Farbe farbe,int x,int y) const
    {
       return pruefung(farbe,x,y,1,1);
    }
    int Stellung::pruefungO(Farbe farbe,int x,int y) const
    {
       return pruefung(farbe,x,y,1,0);
    }
    int Stellung::pruefungSO(Farbe farbe,int x,int y) const
    {
       return pruefung(farbe,x,y,1,-1);
    }
    int Stellung::pruefungS(Farbe farbe,int x,int y) const
    {
       return pruefung(farbe,x,y,0,-1);
    }
    int Stellung::pruefungSW(Farbe farbe,int x,int y) const
    {
       return pruefung(farbe,x,y,-1,-1);
    }
    int Stellung::pruefungW(Farbe farbe,int x,int y) const
    {
       return pruefung(farbe,x,y,-1,0);
    }
    int Stellung::pruefungNW(Farbe farbe,int x,int y) const
    {
       return pruefung(farbe,x,y,-1,1);
    }
    Wert Stellung::bewerte() const//Aus Sicht dessen, der gerade dran ist
    {
       if(istUnentschieden())
          return UNENTSCHIEDEN;
       int x=sageLetztenZug();
       int y=hoehe[x]-1;
       Farbe farbe=werWarDran();
       if(at(x,y)==farbe)
       {
          if(pruefungS(farbe,x,y)>=3) return verlorenBeiZug(zugNummer);
          if(pruefungW(farbe,x,y)+pruefungO(farbe,x,y)>=3) return verlorenBeiZug(zugNummer);
          if(pruefungSW(farbe,x,y)+pruefungNO(farbe,x,y)>=3) return verlorenBeiZug(zugNummer);
          if(pruefungNW(farbe,x,y)+pruefungSO(farbe,x,y)>=3) return verlorenBeiZug(zugNummer);
       }
       return UNBEKANNT;
    }
    

Log in to reply