Verificações

Verificações

por Karina Silva -
Número de respostas: 4
Oi, estou com um problema: por enquanto, faço verificações para que dado um "chute" (sim, estou fazendo backtracking, tentando todas as possibilidades), eu verifico se é válido analisando a coluna e a linha. Depois, vi que deveria verificar também a região. Bom, acontece que aparentemente, entrei num loop para uma matriz 9x9. E é claro que para uma matriz 4x4 ele dá uma solução mas não é a correta. No caso da 9x9, ele fica rodando, indo e voltando mas nunca termina... Para considerar uma matriz "parcial aceitável", devo fazer todas verificações de uma só vez (analisar coluna, linha e região)?
Em resposta à Karina Silva

Re: Verificações

por Karina Silva -
Complementando... Fiz a verificação por região, mas agora aparece falha de segmentação... Como eu posso encontrar onde ele pode estar dando essa falha? Para matriz 4x4 parece fácil e geralmente dá certo... Agora, para a matriz do exemplo é um pouco complicado, ele chega a fazer muitas verificações aparentemente e dá essa falha...
Em resposta à Karina Silva

Re: Verificações

por João Francisco Amorim Enomoto -
Vamos por partes então. Antes de mais nada, use exemplos que realmente possuam resposta. Minha sugestão fica para Sudokus publicados no Estado de São Paulo (se não me engano, ou na Folha de São Paulo) ou ainda você deve achar problemas na internet. Teste SEMPRE problemas com resposta, isso garante que ele terá sempre resposta. (comentário pessoal: sim, eu já fiz testes em programas e o teste não tinha uma resposta.)

Quanto as verificações, eu acredito que as verificações por linha e por coluna não estão dando problema certo? Se as verificações dos quadrados menores estiverem dando problema, traga à monitoria para verificarmos. A princípio não é nada difícil. Se está dando falha de segmentação, bem provavelmente algum dos índices que você está usando para percorrer a matriz está saindo para fora do limite da matriz. Em matrizes pequenas tudo pode estar funcionando, pois o C não reclama para pequenas escapulidas de índices para fora das matrizes. Atente para essa possibilidade.

Abraços!
Em resposta à João Francisco Amorim Enomoto

Re: Verificações

por Karina Silva -
Aw, então, como eu poderia ter certeza de que as verificações não estariam acessando posições erradas? Eu até fico imprimindo os contadores das posições porque os declarei globais mas geralmente não há nenhum problema... Eu fiz o seguinte teste: coloquei uma matriz vazia para que ele fosse completando as casas fazendo todas as verificações possíveis, mas ele deu falha de segmentação no meio, aparentemente sem motivo. Será que estourou alguma pilha do sistema ou coisa parecida?

Obs: Para fazer as verificações de números repetidos eu utilizo um vetor auxiliar marcando nas posicoes correspondentes os valores já verificados, caso encontre um numero repetido, ele devolve -1...
Fiquei alocando e percebi que eu tinha esquecido de desalocar. Tentei fazer um free mas teve um dos metodos que deu o problema q eu ja tinha falado no ep anterior e q o prf gubi disse q estava tentando dar um free numa posicao que num tem nada... dai eu tive que deixar soh um metodo sem dar o free... poderia ser esse o problema?