• Matéria: Informática
  • Autor: marciomercier
  • Perguntado 8 anos atrás

estou com duvida como funciona o comando if(jogadas%2), o professor me disse que o comando % e para pegar o resto da divisão , no caso ali pegaria o numero de jogadas e dividiria por 2 e pegaria o resto da divisao , porem nao tem nenhuma condição como por exemplo if(jogadas%2==0), por isso estou com duvida, quando que vai entrar na condição if(jogadas%2)

#include <stdlib.h>

int main()
{
char Matriz[3][3]; // tamanho da matriz
char O='O', X='X';
int jogadas=0,j,i;


for(i=0;i<3;i++) // preenche a linha da matriz
for(j=0;j<3;j++) // preenche a coluna da matriz
Matriz[i][j]=' ';

while(jogadas<=9) // enquanto jogadas menor ou igual a 9 entra na condição
{
printf(" JOGO DA VELHA \n");
printf("\t 1 2 3 \n", Matriz[0][0],Matriz [0][1], Matriz [0][2]);
printf(" 1 %c | %c | %c \n", Matriz[0][0],Matriz [0][1], Matriz [0][2]);
printf("\t ---------\n");
printf(" 2 %c | %c | %c \n", Matriz[1][0],Matriz [1][1], Matriz [1][2]);
printf("\t ---------\n");
printf(" 3 %c | %c | %c \n", Matriz [2][0],Matriz [2][1], Matriz [2][2]);

printf("\n\n\n\n\n\n\n\n\n\n\n\n INSIRA AS COORDENADAS, ");
if(jogadas%2) // pega o resto de jogadas / 2
{
printf("PLAYER 2\nLINHA: ");
}
else
{
printf("PLAYER 1\nLINHA: ");
}

scanf("%d",&i); // verifica o numero da linha escolhida
printf("COLUNA: ");
scanf("%d",&j); //verifica o numero da coluna escolhida

if(Matriz[i-1][j-1]==' ') // vai entrar na condição enquanto a linha e coluna nao forem preenchidas
{
if(jogadas%2)Matriz[i-1][j-1]=X; // se o player 2 escolher a posição vai colocar um X
else Matriz[i-1][j-1]=O; // se o player 1 escolher a posição vai colocar um X
jogadas++; // jogadas recebe +1
}

// condição para ver se o jogar 1 ocupou as posiões necessarias para ganhar
if((Matriz[0][0]==O && Matriz[0][1]==O && Matriz[0][2]==O)||
(Matriz[1][0]==O && Matriz[1][1]==O && Matriz[1][2]==O)||
(Matriz[2][0]==O && Matriz[2][1]==O && Matriz[2][2]==O)||
(Matriz[0][0]==O && Matriz[1][0]==O && Matriz[2][0]==O)||
(Matriz[0][1]==O && Matriz[1][1]==O && Matriz[2][1]==O)||
(Matriz[0][2]==O && Matriz[1][2]==O && Matriz[2][2]==O)||
(Matriz[0][0]==O && Matriz[1][1]==O && Matriz[2][2]==O)||
(Matriz[0][2]==O && Matriz[1][1]==O && Matriz[2][0]==O))
{
printf("\n\a\t\tJogador 1, VOCE VENCEU!!!");
break; // termina o codigo
}

// condição para ver se o jogar 2 ocupou as posiões necessarias para ganhar
if((Matriz[0][0]==X && Matriz[0][1]==X && Matriz[0][2]==X)||
(Matriz[1][0]==X && Matriz[1][1]==X && Matriz[1][2]==X)||
(Matriz[2][0]==X && Matriz[2][1]==X && Matriz[2][2]==X)||
(Matriz[0][0]==X && Matriz[1][0]==X && Matriz[2][0]==X)||
(Matriz[0][1]==X && Matriz[1][1]==X && Matriz[2][1]==X)||
(Matriz[0][2]==X && Matriz[1][2]==X && Matriz[2][2]==X)||
(Matriz[0][0]==X && Matriz[1][1]==X && Matriz[2][2]==X)||
(Matriz[0][2]==X && Matriz[1][1]==X && Matriz[2][0]==X))
{
printf("\n\n\n\n\a\t\tJogador 2, VOCE VENCEU!!!");
break; //termina o codigo
}

if(jogadas==9) //se jogadas for igual a 9 da velha
{
printf("PARTIDA EMPATADA");
break;
}

}

return(0);
}

Respostas

respondido por: FdASO
1
C interpreta qualquer valor que não seja 0 como verdadeiro e qualquer valor 0 como falso.
Por exemplo:

if (15 % 2) ----> isso é verdadeiro pois o resto da divisão é 1

if (10 % 2) ---> isso é false pois o resto da divisão é 0

Mas sim, você pode escrever

if (10 % 2 == 0) ----> isso é verdadeiro pois o resto da divisão é 0




marciomercier: vlw , ajudo bastante
Perguntas similares