lightningspirit Posted January 4, 2008 at 04:27 PM Report Share #157800 Posted January 4, 2008 at 04:27 PM Olás! Será que alguém me pode ajudar a encontrar um nesta função? Eu tenho como estruturas: typedef struct { int colunas; int linhas; char tabuleiro[10][10]; } Tabuleiro; typedef struct { char jogador[256]; int nivel_dificuldade; Estado estado_do_jogo; Tabuleiro tabuleiro; } Jogo; e tenho a seguinte função que é chamada por uma outra. Sei que o erro está aqui, mas não consigo perceber onde. int verificaQuatroMarcas(Tabuleiro *tabuleiro, char marca) { int coluna, linha; for(coluna=1;coluna<=(tabuleiro->colunas);coluna++) { for(linha=1;linha<=(tabuleiro->linhas);linha++) { if(maiorAdjacente(tabuleiro,marca,coluna,linha)>3) { return TRUE; } else printf("\nVerificado!"); } } return FALSE; } Tomando, anteriormente, valores arbitrários para colunas e linhas, a função deveria mostrar a mensagem verificado para cada uma das posições da matriz tabuleiro (colunas * linhas) porém isso não acontece, só apresenta no ecrã "linhas" vezes. Presumo que ela só lê para as posições da coluna 1 e descarta as outras, porque razão, alguém me sabe dizer? Link to comment Share on other sites More sharing options...
shumy Posted January 4, 2008 at 04:37 PM Report Share #157805 Posted January 4, 2008 at 04:37 PM Faz um debug. Outra alternativa, coloca um printf("TRUE"); antes do return TRUE; Pode estar a acontecer que a função maiorAdjacente(...) não retorne o que deveria. E uma das causas é o facto de estares a usar tipo linha=1;linha<=(tabuleiro->linhas) em vez de linha=0;linha<(tabuleiro->linhas) mas isso depende do valor que atribuires a tabuleiro->linhas. Da mesma forma para coluna. Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática! Link to comment Share on other sites More sharing options...
lightningspirit Posted January 4, 2008 at 07:01 PM Author Report Share #157856 Posted January 4, 2008 at 07:01 PM Bem, vou ver então, é possível que o problema esteja dentro do for... Obrigado! 😉 Link to comment Share on other sites More sharing options...
TheDark Posted January 6, 2008 at 04:40 AM Report Share #158200 Posted January 6, 2008 at 04:40 AM Só para acrescentar ao post do shumy: tabuleiro[10][10] vai de tabuleiro[0][0] a tabuleiro[9][9] e não de tabuleiro[1][1] a tabuleiro[10][10], por isso Tabuleiro->linhas e Tabuleiro->colunas nunca deverão ter valores superiores a 9 quando estás a utilizar o <= Desaparecido. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now