Skip to content

Instantly share code, notes, and snippets.

@HiagoSouz
Created December 20, 2018 05:53
Show Gist options
  • Save HiagoSouz/40dd9c84a6f7d2df691e899b53a99ae7 to your computer and use it in GitHub Desktop.
Save HiagoSouz/40dd9c84a6f7d2df691e899b53a99ae7 to your computer and use it in GitHub Desktop.
Problema 2
#include <iostream> //declaracao de biblioteca padrão do código, necessário para o funcionamento
#include <string>
using namespace std; //declaração padrão também
int main ()
{
int n=3,i,j,ContadorX=0,ContadorO=0,Erro=0,ContaX=0,ContaO=0,ContaP=0;
char jogo[n][n];
cout << "Insira o jogo atual: (horizontalmente) " << endl; //Recebemos UM CARACTER POR VEZ AQUI, de forma horizontal
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
cin>>jogo[i][j];
if (jogo[i][j]=='X')
ContaX++;
if (jogo[i][j]=='O')
ContaO++;
if (jogo[i][j]=='.')
ContaP++;
if ((jogo[i][j]!='X')&&(jogo[i][j]!='O')&&(jogo[i][j]!='.')) //se um caracter invalido for inserido saberemos por esse if, que soma ao contador de erros
Erro++;
}
if ((jogo[0][0]=='X')&&(jogo[0][1]=='X')&&(jogo[0][2]=='X')) //HORIZONTALMENTE X
ContadorX++;
if ((jogo[1][0]=='X')&&(jogo[1][1]=='X')&&(jogo[1][2]=='X'))
ContadorX++;
if ((jogo[2][0]=='X')&&(jogo[2][1]=='X')&&(jogo[2][2]=='X'))
ContadorX++;
if ((jogo[0][0]=='X')&&(jogo[1][0]=='X')&&(jogo[2][0]=='X')) //VERTICALMENTE X
ContadorX++;
if ((jogo[0][1]=='X')&&(jogo[1][1]=='X')&&(jogo[2][1]=='X'))
ContadorX++;
if ((jogo[0][2]=='X')&&(jogo[1][2]=='X')&&(jogo[2][2]=='X'))
ContadorX++;
if ((jogo[0][0]=='O')&&(jogo[0][1]=='O')&&(jogo[0][2]=='O')) //HORIZONTALMENTE 0
ContadorO++;
if ((jogo[1][0]=='O')&&(jogo[1][1]=='O')&&(jogo[1][2]=='O'))
ContadorO++;
if ((jogo[2][0]=='O')&&(jogo[2][1]=='O')&&(jogo[2][2]=='O'))
ContadorO++;
if ((jogo[0][0]=='O')&&(jogo[1][0]=='O')&&(jogo[2][0]=='O')) //VERTICALMENTE 0
ContadorO++;
if ((jogo[0][1]=='O')&&(jogo[1][1]=='O')&&(jogo[2][1]=='O'))
ContadorO++;
if ((jogo[0][2]=='O')&&(jogo[1][2]=='O')&&(jogo[2][2]=='O'))
ContadorO++;
//Verificação dos resultados
if ((Erro!=0)||(ContadorO>2)||(ContadorX>2)) //caso o resultado seja invalido
cout << "invalido" << endl;
else
{
if ((ContadorX>0)||(ContadorO>0)) //Para caso de vencedores
{
if ((ContadorX==ContadorO)||(ContadorX>ContadorO))
cout << "primeiro_venceu" << endl;
if (ContadorX<ContadorO)
cout << "segundo_venceu" << endl;
}
if ((ContadorX==0)&&(ContadorO==0)&&(ContaP==0)) //Caso haja empate
cout << "empate" << endl;
if ((ContadorX==0)&&(ContadorO==0)&&(ContaP!=0)) //Caso ainda haja espaços disponíveis para se jogar
{
if (ContaX >= ContaO)
cout << "segundo" << endl;
if (ContaO > ContaX)
cout << "primeiro" << endl;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment