Dúvida num exercicio de C

D1STURB3DL1GHT

Power Member
Boas pessoal,

Não costumo perguntar nada no que toca a estes assuntos e tento sempre resolver as minhas dúvidas de forma autónoma, mas estou com uma situação que me esta a fazer perder os cabelos todos ahah

Eu fiz este exercicio de um jogo mastermind: https://github.com/diogo-luz/mastermind-c

Mas por algum motivo se o código for por exemplo 3141 e eu colocar 1234 aquilo diz-me que tenho 4 opcoes corretas em posicoes diferentes quando me deveria dizer que só tenho 3.

Conseguem dizer-me qual é o erro na minha funcao verifica_palpite para este erro?

Eu já fiz as iterações em papel e caneta e tudo e não consigo chegar ao resultado que o computador chega :facepalm:
 
Penso que isto resolve. Metes antes da linha 184 na função verifica_palpite. Inicia a flag=0 no inicio da função. Basicamente o que tens que fazer é que cada dígito do código tenha que ser pesquisado só uma vez para evitar as repetições. Penso que seja isto.

Código:
for(int k=0; k<i; ++k){
     if(codigo[i]==codigo[k]){
          flag=1;
          break;
    }
}
if(flag==1){
     flag=0;
     continue;
}
 
Penso que isto resolve. Metes antes da linha 184 na função verifica_palpite. Inicia a flag=0 no inicio da função. Basicamente o que tens que fazer é que cada dígito do código tenha que ser pesquisado só uma vez para evitar as repetições. Penso que seja isto.

Código:
for(int k=0; k<i; ++k){
     if(codigo[i]==codigo[k]){
          flag=1;
          break;
    }
}
if(flag==1){
     flag=0;
     continue;
}

Estive a mexer com essa ideia e apesar de agora ter erro numa outra situação, resolve a que tinha indicado inicialmente.

No entanto, percebi a ideia, e acho que a solução também vai passar por uma coisa semelhante.

Muito obrigado pela ajuda,
vou continuar entretido a polir o código com essa nova abordagem que me indicaste.
 
Back
Topo