mbrainiac
(usa Debian)
Enviado em 08/08/2015 - 18:03h
Ex 11 cap 6 do Dammas;
coloquei:
int diagonal(char g[DIM][DIM], char ch)
{
return (g[0][0] == g[1]g[1] && g[2][2] == g[1]g[1] && g[0][0] == ch) || (g[0]g[2] == g[1][1] && g[2]g[0] == g[1][1] && g[0][2]== ch);
}
Mas no livro está:
int diagonal(char g[DIM][DIM], char ch)
{
return (g[0][0] == g[1]g[1] && g[2][2] == g[1]g[1] && g[0][0] == ch) || (g[0]g[2] == g[1][1] && g[2]g[0] == g[1][1] && g[0][2]== ch);
}
a do livro
/* return (g[0][0] == g[1]g[1] && g[2][2] == g[1]g[1] & g[0][0] == ch) || (g[0]g[2] == g[1][1] && g[2]g[0] == g[1][1] & g[0][2]== ch); */
tentei com ambas e nada e nã ocompreendi também a esse '&&' e o '&'
Achava que o and seria apenas '&&'
/* pg162 ex4 cap 6*/
#include<stdio.h>
#define DIM 3
#define ESPACO ' '
void inic(char s[][DIM]);
void mostra(char s[DIM][DIM]);
int ganhou(char g[DIM][DIM], char ch);
int linha(char v[], char c);
int coluna(char g[DIM][DIM], int col, char ch);
int diagonal(char g[DIM][DIM], char ch);
/* Inicia tabuleiro*/
void inic(char s[][DIM])
{
int i,j;
for(i =0; i < DIM; i++)
for(j = 0; j < DIM; j++)
s[i][j] = ESPACO;
}
/*Mostra aspecto do tabuleiro*/
void mostra(char s[DIM][DIM])
{
int i, j;
for(i =0; i < DIM; i++)
{
for(j = 0; j < DIM; j++)
printf("%c %c ",s[i][j], j == DIM - 1?' ': '|');
if(i != DIM-1)
printf("\n-------------");
putchar('\n');
}
}
/*Verifica se n-ésima linha est'preenchida com o char c */
int linha(char v[], char c)
{
return v[0] == v[1] && v[1] == v[2] && v[0] == c;
}
/*VErifica se a coluna col está toda prenchida com char '*' */
int coluna(char g[DIM][DIM], int col, char ch)
{
return g[0][col] == g[1][col] && g[1][col] == g[2][col] && g[0][col] == ch;
}
/*Verifica se alguma das diagonais está preenchida totalmente
com o char c*/
int diagonal(char g[DIM][DIM], char ch)
{
return (g[0][0] == g[1]g[1] && g[2][2] == g[1]g[1] && g[0][0] == ch) || (g[0]g[2] == g[1][1] && g[2]g[0] == g[1][1] && g[0][2]== ch);
}
/* Verifica se o jogador so caractere ch ganhou o jogo*/
int ganhou(char g[DIM][DIM], char ch)
{
if(linha(g[0], ch) || linha(g[1], ch) || linha(g[2], ch))
return 1;
if(coluna(g,0, ch) || coluna(g,1, ch) || coluna(g,2, ch))
return 1;
if(diagonal(g, ch))
return 1;
return 0; /* Não ganhou o jogo*/
}
main()
{
char velha[DIM][DIM];
int posx, posy;
char ch = '0'; /* caractere a jogar*/
int n_jogadas = 0;
inic(velha);
while(1) /* Laço infinito*/
{
mostra(velha);
printf("\n Introduza a Posição de jogo Linha Coluna :");
scanf("%d %d", &posx, &posy);
if(posx > DIM || posy > DIM)
{
printf("n\\n ***** Valores Inválidos *****\n\n");
continue; /* Próxima iteração*/
}
posx--, posy--; /* Os indices do vetor começam do zero */
if(velha[posx][posy] == ESPACO) /* casa livre */
{
velha[posx][posy] = ch = (ch == '0') ? 'x' : '0';
n_jogadas ++;
if(ganhou(velha,ch)) /* Basta verificar o jogador corrente*/
{
printf("\n\n **** Ganhou o jogador %c ****\n\n",ch);
break;
}
else
printf("Posição já ocupada\n Jogue novamente !!!\n");
if(n_jogadas == DIM * DIM)
{
printf(" \n\n **** EMPATE TÉCNICO ****\n\n");
break; /* Acabar o Laço */
}
}
mostrar(velha);
}
return 0;
}
erro:
com
int diagonal(char g[DIM][DIM], char ch)
{
return (g[0][0] == g[1]g[1] && g[2][2] == g[1]g[1] && g[0][0] == ch) || (g[0]g[2] == g[1][1] && g[2]g[0] == g[1][1] && g[0][2]== ch);
}
brainiac@hotpc:~/C_programas$ gcc damas0611.c -o damas0611.x
damas0611.c: In function ‘diagonal’:
damas0611.c:64:18: warning: comparison between pointer and integer [enabled by default]
damas0611.c:64:25: error: expected ‘)’ before ‘g’
damas0611.c:64:80: error: expected ‘)’ before ‘g’
brainiac@hotpc:~/C_programas$ clear
erro com
nt diagonal(char g[DIM][DIM], char ch)
{
return (g[0][0] == g[1]g[1] && g[2][2] == g[1]g[1] & g[0][0] == ch) || (g[0]g[2] == g[1][1] && g[2]g[0] == g[1][1] & g[0][2]== ch);
}
brainiac@hotpc:~/C_programas$ gcc damas0611.c -o damas0611.x
damas0611.c: In function ‘diagonal’:
damas0611.c:64:18: warning: comparison between pointer and integer [enabled by default]
damas0611.c:64:25: error: expected ‘)’ before ‘g’
damas0611.c:64:79: error: expected ‘)’ before ‘g’