Compare char in an array function

1

I'm making a game of old and I need to compare the positions if they are the same to verify the winner, but it is not working.

Here is the code:

#include <stdio.h>
#include <string.h>


void exibir();
int checaLocal(char matriz[3][3], int linha, int coluna);
void checarGanhador(char matriz[3][3], char caractere);


int main() {

int i, j;
char matriz[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
printf("Programa Jogo da Velha.\n\n");
exibir(matriz);
int vez = 0;

for(i=0; i<3; i++) {
    for(j=0; j<3; j++) {
        printf("Entre Linha: ");
        scanf("%d", &i);
        printf("Entre Coluna: ");
        scanf("%d", &j);
        vez++;
        if(matriz[i][j] != ' ' || validaLocal(matriz[3][3], i, j)) {
            printf("Posicao Invalido ou Ocupada\n");
            continue;
        }
        if(vez % 2 == 0) {
            matriz[i][j] = 'X';

        } else {
            matriz[i][j] = 'O';
        }
        exibir(matriz);

    }
}
exibir(matriz);


return 0;
}

void exibir(char matriz[3][3]) {

//EXIBE JOGO DA VELHA FORMATADO
   printf("\n");
   printf("%c  | %c | %c \n", matriz[0][0], matriz[0][1], matriz[0][2]);
   printf("---|---|---\n");
   printf("%c  | %c | %c \n", matriz[1][0],matriz[1][1], matriz[1][2]);
   printf("---|---|---\n ");
   printf("%c | %c | %c \n", matriz[2][0], matriz[2][1], matriz[2][2]);
   printf("\n\n");

}

int validaLocal(char matriz[3][3], int linha, int coluna) {
//Checa se o local a ser inserido e valido
    if(linha < 0 || linha > 2 || coluna < 0 || coluna > 2) {
        return 1; //Erro
    }
    else {
    return 0; //tudo ok
    }


}

I tried to compare like this in a function

void verificaGanhador(matriz[3][3], char o) {
if(matriz[0][0] && matriz[0][1] && matriz[0][2] == o)

to compare the first line, but returns an error.

    
asked by anonymous 20.10.2016 / 17:24

2 answers

0
if(matriz[0][0] && matriz[0][1] && matriz[0][2] == o)

array [0] [0] verifies that returns null

array [0] [1] verifies that returns null

array [0] [2] == o Should not be array [0] [2] == 'O';

/* não deveria ser algo mais ou menos assim? */
if(matriz[0][0] == 'O' && 
   matriz[0][1] == 'O' && 
   matriz[0][2] == 'O')

Resolved issue?

    
22.10.2016 / 06:55
0

I was able to solve, Rodgger I wanted to implement in a function to check, so it does not work out of it, and I would have to rewrite it 2 times.

int  verificaGanhador(matriz[3][3], char *o) {
if(matriz[0][0] && matriz[0][1] && matriz[0][2] == *o)
    return 1 
else
    return 0
}

char op1 = 'X';

 if(vez % 2 == 0) {
            matriz[i][j] = op1;
           if(verificaGanhador(matriz, &op1));
           printf("Ganhou.\n");

        } 

So using pointer and passing reference worked.

    
22.10.2016 / 13:59