Aguém pode me dar alguma dica de como fazer a função?!?
Tentei já a um bom tempo, mas não tive muitos resultados....
Obrigado!
Para abrir uma posição:
Se a posição ti
ver bomba : BUM!;
senao se a posicao tiver ao menos uma bomba: basta "abrir" a posicao;
senao (quer dizer que tem zero bombas): "abra" todos os vizinhos.
O "abra" já é uma definição recursiva, ou seja, chame a mesma função
para todos os vizinhos. So tome cuidado para nao sair da matriz, ou seja,
acessar posições ilegais. Basta escrever isso em C.
ht
de uma olhada na função fatorial que vimos em aula.
ht
Tá bem difícil encontrar uma solução para essa função. Acho que o resto do programa vai sair como corolário... :p
O meu problema (dúvida) é: Se a posição contiver um Zero, ela deve abrir os zeros vizinhos. Tudo bem. Mas o "Zero vizinho" do zero inicial vai passar pela mesma função, portanto o "zero vizinho" se torna o "zero inicial" agora. Mas acontece que o antigo "zero inicial" se tornou um novo "zero vizinho", logo, a função se torna cíclica e nunca vai haver um retorno. Diante disso, eu tentei mudar a matriz, ou seja, quando eu achasse um zero, atribuiria o caracter 'z' à posição. Mas continua não dando certo... =\
Mto confuso? Concordo. Professor, mais dicas viriam a calhar ;) .
Bruno Pfefferkorn
AAAHHH!!!AJUDAA!!
Antes de colocar minha dúvida aqui, estava (e estou) com o mesmo problema.
Fica de uma forma tal que você perde a informação "antiga" e não tem como voltar para o passo inicial....
MAIS DICAS POR FAVOR!!!
em programação, ou na resolução de problemas, você precisa "inventar" a estrutura de dados que te permita resolver o problema. Para avançar um pouco, tente definir o que você precisa de informação para resolver o problema. No caso, me parece que você precisa saber quais as posições que já estão abertas, para não abri-las novamente. Essa info vc já tem em algum lugar. basta utiliza-la em seu programa.
ht
no caso, as informações de que preciso são as posições que já foram abertas... no caso, foram os zeros que já foram abertos, certo? De alguma forma, essa minha função atribui um 'z' no lugar onde o 0 já foi lido, mas o problema é que eu não pensei em nenhum critério quando escrevi
N = N + abrePosicao(nL, nC, Bombas, (lin + i), (col + j)) + 1;
na função adiante, pois, após pensar em muitas soluções que não deram certo, apenas fui chutando atribuições... :p (é o desespero)..
PEDAÇO DE CÓDIGO APAGADO.Eu não sei onde usar a recursão, já que eu já sei que posso mudar os valores da matriz Bombas para que não conte o 0 novamente. Não consigo enxergar o 'caso mais simples'.
e além disso, outra dúvida. para abrir as vizinhanças desses zeros, ou seja, os números diferentes de zero que os cercam, eu devo usar a mesma recursão de antes? ou eu posso fazer isso depois que eu já contei os zeros?
(Editado por Carlos Hitoshi Morimoto - quarta, 5 setembro 2007, 20:54)
ht
Consegui!
Obrigado professor! De tanto pensar no código, eu me esqueci que devemos pensar no problema primeiro. fazendo isso eu percebi o erro esdrúxulo que eu estava cometendo... hehe
Obrigado
abraços!
Hehehehehehe...
Obrigado gente!