2016-09-10 2 views
-4

Wenn ein Wert zwischen 1 und 7 eingegeben wird, sollte das Programm prüfen, ob der Wert 1 bis 7 ist und ob der Wert im Array der eingegebenen Zahl nicht 0 ist, aber das Problem mit dieses Programm ist, dass, wenn der Wert House [0] oder andere Array 0 das Programm ist es nicht Schleife tat hältdo while Schleife mit & nicht looping C++

do 
      { 
       cout << "Player 1\n"; 
       cout << "Please choose your location (1 to 7) => "; 
       cin >> h1in ; // player 1 enters a value 
       cin.clear();// used to clear the value if a str value is entered 
       cin.ignore(1000,'\n');// used to clear the value if a str value is entered 
       if ((h1in<1)||(h1in>7)) 
       { 
        cout << "You entered the wrong input \n\n"; 
       } 
       if(house[h1in-1]==0) 
       { 
        cout<<"jde"; 
       } 

      } while((house[h1in-1]!=0)&(h1in<1)||(h1in>7)); 
if (h1in==1) 
     { 
      for(int i=1;i<7;i++){ 

      house[0]--; 
      house[i]++; 
      if(i==6){ 
       storehouse[0]++; 
       seeds--; 
       house[0]--; 
      } 
      printout(); 

      } 

      } 
      else if(h1in==2) 
      { 
      for(int i=1;i<7;i++){ 
       house[1]--; 
       house[i+1]++; 
       if(i==6){ 
       storehouse[0]++; 
       seeds--; 
       house[1]--; 

       } 
       printout(); 
      } 
      } 
      else if(h1in==3) 
      { 
       for(int i=1;i<7;i++) 
       { 
        house[2]--; 
        house[i+2]++; 
        if(i==6){ 
        storehouse[0]++; 
        seeds--; 
        house[2]--; 
        } 
        printout(); 
       } 
      } 
      else if(h1in==4) 
      { 
       for(int i=1;i<7;i++) 
       { 
        house[3]--; 
        house[i+3]++; 
        if(i==6){ 
        storehouse[0]++; 
        seeds--; 
        house[3]--; 
        } 
        printout(); 
       } 
      } 
      else if(h1in==5) 
      { 
       for(int i=1;i<7;i++) 
       { 
        house[4]--; 
        house[i+4]++; 
        if(i==6){ 
        storehouse[0]++; 
        seeds--; 
        house[4]--; 
        } 
        printout(); 
       } 
      } 
      else if(h1in==6) 
      { 
       for(int i=1;i<7;i++) 
       { 
        house[5]--; 
        house[i+5]++; 
        if(i==6){ 
        storehouse[0]++; 
        seeds--; 
        house[5]--; 
        } 
        printout(); 
       } 
      } 
      else if(h1in==7) 
      { 
       for(int i=1;i<7;i++) 
       { 
        house[6]--; 
        house[i+6]++; 
        if(i==6){ 
        storehouse[0]++; 
        seeds--; 
        house[6]--; 
        } 
        printout(); 
       } 
      } 
+0

ich jetzt verwenden, bevorzugen die Namen 'und',' or' und 'not' zur Verfügung gestellt von Standard C++, um den Code mehr klar und lesbar, und vermeiden Sie Missgeschicke wie '&' statt '&&' schreiben. Mit Visual C++, das in diesem Bereich ein wenig in Frage gestellt ist, können Sie einen erzwungenen Include von '' verwenden, um diesen Ansatz zu arbeiten. –

Antwort

2

& ist bitweise and läuft. Es erzeugt auf jedem Bit der Operanden eine binäre and. Sie möchten den Operator &&, der logisch and ist.

Sie auch einige Klammern hinzuzufügen, sollte die letzte Zeile zu machen:

while((house[h1in-1]!=0) && ((h1in<1)||(h1in>7))); 
+0

funktioniert immer noch nicht – Teeban

+0

@Teeban Ihre Frage ist nicht sehr klar. Sie zeigen auch nicht, wo 'house [h1in-1]' jemals zugewiesen wurde. Vielleicht möchten Sie nicht "und", Sie suchen stattdessen nach "oder". – anbarbata