Dúvida ao gerar nºs para Sudoku

bloodrider

Power Member
Boas! Sou novo aqui por estas bandas :P

Tenho um trabalho para uma cadeira, fazer o sudoku. Andei a pesquisar (foi quando encontrei este fórum) e fui estudando os códigos que encontrei.

Fiz o programa de raiz, e agora surgiu-me dois erros(o compilador não detecta erros de sintaxe! uso o Dev-C++):

1- O utilizador pode escolher para aparecerem alguns números aleatórios de inicio no sudoku. Funciona tudo (os números são aleatórios, aparecem em posições aleatórias), o problema é que nesta alturar, enquanto está a gerar, a aplicação fecha-se "sozinha". Se for poucos números, até 3-4, não há problema, até já conseguiu gerar 6, 21, 11, 17 números, mas pronto, para mais de 5 números na maioria das vezes o programa fecha. Penso que o problema deve estar na função gera() ou na verifica().

2- Se iniciar o jogo com tabuleiro vazio, e o primeiro numero inserido for um 1 na linha 1, na coluna 1, o jogo fecha-se sozinho(já aconteceu começar com a matriz vazia, pedir um número, e este gerar um 1 na 1x1!!!!, o problema estará na função inserir()?).

Aqui está o código:
Código:
/* */




[code]
Se alguém me pudesse ajudar, agradecia!
 
Última edição:
Um dos erros que vi foi na n_rand(), chamada pela esc_sel() no modo avançado ou personalizado. Se o programa sortear x = 0 a função não devolve nada no else (ou devolve lixo que está na memória). O que se calhar querias meter era return n_rand(); mas podias devolver rand()%9+1 e não tinhas metade do trabalho. Vê lá o que isso resolve :Whatever:
 
Pois comentários ... he he não estou habituado :P mas tenho que me habituar!

ngr, tinhas razão, isso já ajudou :)

Entretanto já consegui resolver os problemas, apenas não estou a conseguir gerar muitos números, a partir de vinte e tais números fica mesmo lento, ou nem gera. Na conversa com colegas meus, que usaram mais ou menos o mesmo tipo de raciocínio, dizem que só gera até 65 números, depois kaputzzzz.

Vou actualizar o código anterior para verem ;)
 
Entretanto já consegui resolver os problemas, apenas não estou a conseguir gerar muitos números, a partir de vinte e tais números fica mesmo lento, ou nem gera. Na conversa com colegas meus, que usaram mais ou menos o mesmo tipo de raciocínio, dizem que só gera até 65 números, depois kaputzzzz.

Tenho que ler o código...entretanto, estás a usar memória dinâmica? Se não podes estar a encher a memória do PC...

Costumo dar este conselho...tenta um debugger, ou então faz o teu debugger: em cada zona do cód que geres um núm, faz um printf a dar informações sobre variáveis de estado e etc., e mete uma tecla para continuar...pode ser que ajude...
 
Memória dinâmica, nops. Mas penso que da maneira como as variáveis estão determinadas que não há problema...?

vou ver o código com mais atenção ;)


Podem fechar/apagar o tópico ;)
 
Última edição:
Back
Topo