Não preciso declarar o tipo de parâmetro?

1. Não preciso declarar o tipo de parâmetro?


cwars

(usa Ubuntu)

Enviado em 14/11/2007 - 17:56h

Observem o código abaixo:

# include <stdio.h>
# include <stdlib.h>

char jogo_da_velha[3][3];
char tipo_de_jogada;

void Atribua_Velha (void) {
jogo_da_velha[0][0] = ' ';
jogo_da_velha[0][1] = ' ';
jogo_da_velha[0][2] = ' ';
jogo_da_velha[1][0] = ' ';
jogo_da_velha[1][1] = ' ';
jogo_da_velha[1][2] = ' ';
jogo_da_velha[2][0] = ' ';
jogo_da_velha[2][1] = ' ';
jogo_da_velha[2][2] = ' ';
}

int Checar_Vitoria (void) {
int i;

if ((jogo_da_velha[0][0] == tipo_de_jogada) && (jogo_da_velha[1][1] == tipo_de_jogada) &&
(jogo_da_velha[2][2] == tipo_de_jogada)) return 0;

if ((jogo_da_velha[0][2] == tipo_de_jogada) && (jogo_da_velha[1][1] == tipo_de_jogada) &&
(jogo_da_velha[2][0] == tipo_de_jogada)) return 0;

for (i = 0; i < 3; i++) {
if ((jogo_da_velha[i][0] == tipo_de_jogada) && (jogo_da_velha[i][1] == tipo_de_jogada) &&
(jogo_da_velha[i][2] == tipo_de_jogada)) return 0;
if ((jogo_da_velha[0][i] == tipo_de_jogada) && (jogo_da_velha[1][i] == tipo_de_jogada) &&
(jogo_da_velha[2][i] == tipo_de_jogada)) return 0;
}
return 1;
}

void Desenhe (void) {
printf("\n %c | %c | %c ", jogo_da_velha[0][0], jogo_da_velha[0][1], jogo_da_velha[0][2]);
printf("\n %c | %c | %c ", jogo_da_velha[1][0], jogo_da_velha[1][1], jogo_da_velha[1][2]);
printf("\n %c | %c | %c \n", jogo_da_velha[2][0], jogo_da_velha[2][1], jogo_da_velha[2][2]);
}

int verifica (coordenadaX, coordenadaY) {
if (jogo_da_velha[coordenadaX][coordenadaY] != ' ' ) {
printf("\n\nErrado esse lugar já está ocupado\n\n");
return 1;
}
jogo_da_velha[coordenadaX][coordenadaY] = tipo_de_jogada;
return 0;
}

int verifica_Jogada (coordenada) {
if ((coordenada >= 0) && (coordenada < 3)) return 0;
printf ("\n\nErrado só pode de 1 a 9\n\n");
return 1;
}

int Computador_jogada() {
//int coordenada_x;
//int coordenada_y;

srand(time(NULL));

//for (coordenada_x = 0; coordenada_x < 3; coordenada_x++)
// for (coordenada_y = 0; coordenada_y < 3; coordenada_y ++)
// if (jogo_da_velha[coordenada_x][coordenada_y] == tipo_de_jogada) {
//
// }
jogar:
if (verifica(rand() % 3, rand() % 3) == 1) goto jogar;

Desenhe();
return 0;
}

int jogada (void) {

int coordenadaX;
int coordenadaY;

printf("\nCoordenada X: ");
scanf(" %i", &coordenadaX);

coordenadaX -= 1;

if (verifica_Jogada(coordenadaX) != 0) return 1;

printf("Coordenada Y: ");
scanf(" %i", &coordenadaY);

coordenadaY -= 1;

if (verifica_Jogada(coordenadaY) != 0) return 1;

if (verifica(coordenadaX, coordenadaY) == 1) return 1;

Desenhe();

return 0;
}

int main (int argc, char **argv) {
int interacao;
int tipo_de_jogador;

Atribua_Velha();
novamente:
printf ("\n\n\nContra quem deseja jogar:\nContra o Computado (digite 1)\nContra outro Jogador (digite 2)\n\n");
printf ("Digite 1 ou 2: "); if ((interacao%2) != 0) {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 2 Venceu\n\n");
break;
}
printf("\n\nJogador 1 faça sua jogada");
tipo_de_jogada = 'X';
if (jogada() == 1) goto voltar;
} else {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 1 Venceu\n\n");
return 0;
}
printf("\n\nJogador 2 faça sua jogada");
tipo_de_jogada = 'O';
if (Computador_jogada() == 1) goto voltar;
}

scanf (" %i", &tipo_de_jogador);
if ((tipo_de_jogador > 2) || (tipo_de_jogador < 1)) {
printf ("\n\nValor errado\n\n");
goto novamente;
}
for (interacao = 1; interacao <= 9; interacao++) {
voltar:
switch (tipo_de_jogador) {
case 1:
if ((interacao%2) != 0) {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 2 Venceu\n\n");
return 0;
}
printf("\n\nJogador 1 faça sua jogada");
tipo_de_jogada = 'X';
if (jogada() == 1) goto voltar;
} else {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 1 Venceu\n\n");
return 0;
}
printf("\n\nJogador 2 faça sua jogada");
tipo_de_jogada = 'O';
if (Computador_jogada() == 1) goto voltar;
}
break;
case 2:
if ((interacao%2) != 0) {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 2 Venceu\n\n");
return 0;
}
printf("\n\nJogador 1 faça sua jogada");
tipo_de_jogada = 'X';
if (jogada() == 1) goto voltar;
} else {
if (Checar_Vitoria() == 0) {
printf("\n\nJogador 1 Venceu\n\n");
return 0;
}
printf("\n\nJogador 2 faça sua jogada");
tipo_de_jogada = 'O';
if (jogada() == 1) goto voltar;
}

}
}
if (interacao > 9) printf ("\n\n\nFoi um empate\n\n\n");
return 0;
}

Isso ai em cima é o código de um jogo da velha se repararem na função int verifica (coordenadaX, coordenadaY) eu não preciso declarar o tipo de parâmetro se é int, char ou qualquer coisa do tipo, de certo o certo era para está errado e reclamar, contudo isso compila e roda que é uma beleza sem reclamar ou dar qualquer erro bizarro, contudo se eu declarar o tipo ai sim reclama e diz que tá errado. Agora isso é normal com o GCC ou é um bug do mesmo?


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts