Ir para conteúdo
Fórum Script Brasil
  • 0

Matriz Em Função : Erro De Argumento


Guest EcKS

Pergunta

Olá!

Estou tendo um problema ao tentar mandar uma matriz de caracteres para uma função. Crio tal matriz no main e quero utiliza-la na função.

Ex: funcao(char matriz){

...

}

main(){

char matriz[j];

...

funcao(matriz);

}

Obtenho este erro de compilação: "[Warning] passing arg 1 of `funcao' from incompatible pointer type ". Como resolve-lo? alguém pode me ajudar?

Segue meu programa:

#include <stdio.h>

#define LIM 99

int direcao(char matrix[0][0],int limite_lin, int limite_col, int in_lin, int in_col, int out_lin, int out_col){

matrix[in_lin][in_col] = 'C';

int i=0,j=0;

int linha,coluna,aux1,aux2;

linha=in_lin;

coluna=in_col;

/* Direita */

if(((matrix[linha][coluna+1] == '.') || (matrix[linha][coluna+1] == 'C')) && coluna<limite_col){

matrix[linha][coluna] = 'C';

i=linha;

j=coluna+1;

if(matrix[j] == 'C')

matrix[j] = 'X';

direcao(matrix,limite_lin,limite_col,i,j,out_lin,out_col);

if((i == out_lin) && (j == out_col)){

for(aux1=0; aux1<limite_lin; aux1++){

for(aux2=0; aux2<limite_col; aux2++){

if(matrix[aux1][aux2] == 'X')

matrix[aux1][aux2] = '.';

}

}

for(aux1=0; aux1<limite_lin; aux1++){

for(aux2=0; aux2<limite_col; aux2++){

printf("%c", matrix[aux1][aux2]);

}

printf("\n");

}

}

}

/* Baixo */

if(((matrix[linha+1][coluna] == '.') || (matrix[linha+1][coluna] == 'C')) && linha<limite_lin){

matrix[linha][coluna] = 'C';

i=linha+1;

j=coluna;

if(matrix[j] == 'C')

matrix[j] = 'X';

direcao(matrix,limite_lin,limite_col,i,j,out_lin,out_col);

if((i == out_lin) && (j == out_col)){

for(aux1=0; aux1<limite_lin; aux1++){

for(aux2=0; aux2<limite_col; aux2++){

if(matrix[aux1][aux2] == 'X')

matrix[aux1][aux2] = '.';

}

}

for(aux1=0; aux1<limite_lin; aux1++){

for(aux2=0; aux2<limite_col; aux2++){

printf("%c", matrix[aux1][aux2]);

}

printf("\n");

}

}

}

/* Esquerda */

if(((matrix[linha][coluna-1] == '.') || (matrix[linha][coluna-1] == 'C')) && coluna>0){

matrix[linha][coluna] = 'C';

i=linha;

j=coluna-1;

if(matrix[j] == 'C')

matrix[j] = 'X';

direcao(matrix,limite_lin,limite_col,i,j,out_lin,out_col);

if((i == out_lin) && (j == out_col)){

for(aux1=0; aux1<limite_lin; aux1++){

for(aux2=0; aux2<limite_col; aux2++){

if(matrix[aux1][aux2] == 'X')

matrix[aux1][aux2] = '.';

}

}

for(aux1=0; aux1<limite_lin; aux1++){

for(aux2=0; aux2<limite_col; aux2++){

printf("%c", matrix[aux1][aux2]);

}

printf("\n");

}

}

}

/* Cima */

if(((matrix[linha-1][coluna] == '.') || (matrix[linha-1][coluna] == 'C')) && linha>0){

matrix[linha][coluna] = 'C';

i=linha-1;

j=coluna;

if(matrix[j] == 'C')

matrix[j] = 'X';

direcao(matrix,limite_lin,limite_col,i,j,out_lin,out_col);

if((i == out_lin) && (j == out_col)){

for(aux1=0; aux1<limite_lin; aux1++){

for(aux2=0; aux2<limite_col; aux2++){

if(matrix[aux1][aux2] == 'X')

matrix[aux1][aux2] = '.';

}

}

for(aux1=0; aux1<limite_lin; aux1++){

for(aux2=0; aux2<limite_col; aux2++){

printf("%c", matrix[aux1][aux2]);

}

printf("\n");

}

}

}

}

main(){

int linhas,colunas,in_lin,in_col,out_lin,out_col;

int i,j;

char matriz[LIM][LIM];

/* Entrada */

printf("Digite o número de linhas do labirinto: ");

scanf("%d", &linhas);

printf("Digite o número de colunas: ");

scanf("%d", &colunas);

printf("Digite a linha i da entrada do labirinto: ");

scanf("%d", &in_lin);

printf("Digite a coluna j da entrada do labirinto: ");

scanf("%d", &in_col);

printf("Digite a linha i da saída do labirinto: ");

scanf("%d", &out_lin);

printf("Digite a coluna j da saída do labirinto: ");

scanf("%d", &out_col);

printf("\nDigite o mapa do labirinto. Utilize: ");

printf("\n>Pontos (.) para representar caminho e;");

printf("\n>Tralhas (#) para representar as paredes.\n");

/* Leitura do Mapa */

for(i=0; i<linhas; i++){

for(j=0; j<colunas; j++){

scanf(" %c", &matriz[j]);

}

}

/* Chamando DIRECAO */

direcao(matriz,linhas,colunas,in_lin,in_col,out_lin,out_col);

getch();

}

Simplesmente C...não é C++!

Valeu! EcKS

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Opa!

Para passar arrays bidimensionais para funções você deve, no protótipo da função, informar o quantas colunas têm no array dessa forma:

void print( int array[][ num_colunas ] );
No seu caso ficaria:
int direcao( char matrix[][ LIM ], int limite_lin, int limite_col, int in_lin, int in_col, int out_lin, int out_col );

Sacou? wink.gif

Até mais!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...