2011-07-16 56 views
0

我收到以下錯誤錯誤:不對應的 '運營商&&'

error: no match for 'operator&&' in 'board[0][0] && board[0][1]'

我的代碼如下:

#include <iostream> 
    #include <cstdlib> 
    #include <ctime> 

    using namespace std; 

    int main() 
    { 
     string board[3][3]; 
     board[0][0] = "[ ]"; 
     board[0][1] = "[ ]"; 
     board[0][2] = "[ ]"; 
     board[1][0] = "[ ]"; 
     board[1][1] = "[ ]"; 
     board[1][2] = "[ ]"; 
     board[2][0] = "[ ]"; 
     board[2][1] = "[ ]"; 
     board[2][2] = "[ ]"; 
     string choice; 
     int counter; 
     do 
     { 
      for(counter=0;counter<5;counter++) 
      { 
       cout<<board[0][0]<<board[0][1]<<board[0][2]<<endl; 
       cout<<board[1][0]<<board[1][1]<<board[1][2]<<endl; 
       cout<<board[2][0]<<board[2][1]<<board[2][2]<<endl; 
      cout<<"(Player 1) Tell me the coordinates of where you want your X togo: "; 
       cin>>choice; 
       cout<<endl; 
       if(choice=="1,1") 
       { 
        board[0][0] = "[X]"; 
       } 
       else if(choice=="1,2") 
       { 
        board[1][0] = "[X]"; 
       } 
     else if(choice=="1,3") 
     { 
      board[2][0] = "[X]"; 
     } 
     else if(choice=="2,1") 
     { 
      board[0][1] = "[X]"; 
     } 
     else if(choice=="2,2") 
     { 
      board[1][1] = "[X]"; 
     } 
     else if(choice=="2,3") 
     { 
      board[2][1] = "[X]"; 
     } 
     else if(choice=="3,1") 
     { 
      board[0][2] = "[X]"; 
     } 
     else if(choice=="3,2") 
     { 
      board[1][2] = "[X]"; 
     } 
     else if(choice=="3,3") 
     { 
      board[2][2] = "[X]"; 
     } 

     if(board[0][0] && board[0][1] && board[0][2] == "[X]" || board[1][0] && board[1][1] && board[1][2] == "[X]" || board[2][0] && board[2][1] && board[2][2] == "[X]" || board[0][0] && board[1][0] && board[2][0] == "[X]" || board[0][1] && board[1][1] && board[2][1] == "[X]" || board[0][2] && board[1][2] && board[2][2] == "[X]" || board[0][0] && board[1][1] && board[2][2] == "[X]" ||board[2][0] && board[1][1] && board[0][2] == "[X]" ||) 
     { 
      cout<<"Player 1 wins!"<<endl; 
     } 

    } 
} 
while(counter<5); 
return 0; 

}

線的誤差是是如下:

if(board[0][0] && board[0][1] && board[0][2] == "[X]" || board[1][0] && board[1][1] &&  board[1][2] == "[X]" || board[2][0] && board[2][1] && board[2][2] == "[X]" || board[0][0] && board[1][0] && board[2][0] == "[X]" || board[0][1] && board[1][1] && board[2][1] == "[X]" || board[0][2] && board[1][2] && board[2][2] == "[X]" || board[0][0] && board[1][1] && board[2][2] == "[X]" ||board[2][0] && board[1][1] && board[0][2] == "[X]" ||) 

回答

9

你需要改變一些荷蘭國際集團等:

board[0][0] && board[0][1] && board[0][2] == "[X]"

到:

board[0][0] == "[X]" && board[0][1] == "[X]" && board[0][2] == "[X]"

使上的& &每一側上的輸入是布爾值

+0

我應該使每一套新的3個單位自身的if語句還是可以的我如果陳述如我一樣,保持一切爲一體? – Bob

+0

@Jesus'std :: string'對'const char *'有一個'operator =='重載。它會工作。 –

+0

@Etienne,你是對的我一直在做C太長 –

0

我建議使用字符數組代替的字符串數組 - 然後,當您要求用戶輸入並且他輸入「1,3」時 - 您可以簡單地聲明兩個整數並使用它們:

int x, y; 
scanf("%i,%i", &x, &y); 
board[x][y] = 'X'; 
// and when printing the board, use: cout << "["<<board[x][y]<<"]"; 
// - or better yet, use printf :) 

// alternatively with cin: 
int x, y; 
cin >> x; 
cin.ignore(1,','); 
cin >> y; 
board[x][y] = 'X'; 

這將縮短了所有的「決定 - 這平方的用戶挑選」的代碼:)