井字棋,判断后手(后手为O)是否有三子连成直线,哪里出错了?

输入格式:
第一行输入一个整数t(1<=t<=1000)代表t组输入。接下来每组输入一个井字棋游戏局面。


#include <iostream>
using namespace std;
void Judgegame(char str[3][3])
{
    int i,sum=0;
    for(i=0;i<3;i++)
    {
        if(str[i][0]=='O')
        {
            if((str[i][0]==str[i][1])&&(str[i][1]==str[i][2]))
            {
                cout<<"yes"<<endl;
                sum++;
                break;
            }
        }
    }
    for(i=0;i<3;i++)
    {
        if(str[0][i]=='O')
        {
            if((str[0][i]==str[1][i])&&(str[i][1]==str[2][i]))
            {
                cout<<"yes"<<endl;
                sum++;
                break;
            }
        }
    }
    if(str[1][1]=='O')
    {
        if(((str[0][0]==str[1][1])&&(str[1][1]==str[2][2]))||((str[2][0]==str[1][1])&(str[1][1]==str[2][0])))
        {
            cout<<"yes"<<endl;
            sum++;
        }
    }
    if(sum==0)
    {
        cout<<"no"<<endl;
    }
}
int main()
{
    int t,i,j,k;
    char a[3][3];
    cin>>t;
    for(i=1;i<=t;i++)
    {
        for(j=0;j<3;j++)
        {
            for(k=0;k<3;k++)
            {
                cin>>a[j][k];
            }
        }
        Judgegame(a);
    }
    return 0;
}

在判断列的时候错了
if((str[0][i]==str[1][i])&&(str[i][1]==str[2][i]))
改成
if((str[0][i]==str[1][i])&&(str[1][i]==str[2][i]))
(str[i][1]改成str[1][i])