question

Falta o codigo para o programa de Mastermind C?

O último problema Im tendo é encontrar o código certo para corrigir a função quase quando houver mais de um de um número
O código é 4742

se eu acho 2474
Direito 0, quase 2

deve ser quase 4, desde 4 números correspondência, mas todos na posição errada
Aqui está o código até agora:

# include<stdio.h>
# include<stdlib.h>
# include<time.h>

/ Protótipos /
void intcodearray (int codearr[]);
void getGuess (int guessarr[]);
int comparearray (int codearr [], int guessarr [], int flagarr[]);
void showresults (int flagarr[]);
void outputarray (int outarr[]);

/ programa principal entrada /
int main (int argc, char argv[])
{
int codearr [4], guessarr [4], flagarr [4] = {0,0,0,0};
int max_tries = 0;
vitória de int = 0;

/ Introdução /
printf("===========================================================\n");
printf("\t\t\tCODEBREAKER\n");
printf("===========================================================\n");
printf ("bem-vindo ao Codebreaker, insira 4 números entre 0-9.\n");
printf ("ter até dez tentativas para descobrir o código. Boa sorte! \ n \ n ");
/ Terminar introdução /


intcodearray(codearr);

/ / outputarray(codearr);


para (max_tries = 0; max_tries<= 10="" ;="" max_tries++)=""></=>
{
printf ("código adivinhar:");
getGuess(guessarr);

outputarray(guessarr);


ganhar = comparearray (codearr, guessarr, flagarr);

/ / outputarray(flagarr);

if(Win==4) / palpites máximo atingido, jogo final /
{
printf ("felicitações, você resolveu com êxito o quebra-cabeça. \ n");
quebra;
}
se (max_tries = = 10 && ganhar! = 4)
{
printf ("\nque foi dez palpites, e você era incapaz de resolver o enigma. \ n");
printf ("A resposta foi:");
outputarray(codearr);
printf ("você falhou. Adeus! \n ");
}

}

System("Pause");
return 0;
}

/ Void códigos /

privatevoid intcodearray(int codearr[])
{
int i = 0;
srand(time(NULL));
para (i = 0; i<4 ;="" i++)=""></4>
{
codearr [i] = rand () %9;
}
}
privatevoid getGuess(int guessarr[])
{
palpite de int = 0;
scanf ("%d", &guess);

guessarr [0] = palpite / 1000;
palpite = palpite % 1000;
guessarr [1] = palpite / 100;
palpite = palpite % 100;
guessarr [2] = palpite / 10;
palpite = palpite % 10;
guessarr [3] = estimativa;


}
int comparearray (int codearr [], int guessarr [], int flagarr[])
{
código de int, palpite, bandeira;
int i = 0, externa = 0;
int direita = 0, quase = 0;
para (i = 0; i<4 ;="" i++)="" rights=""></4>

{
se (codearr [i] = = guessarr[i])
/ / printf ("Yes\n", guessarr[i]);
{
flagarr [i] = 1;
direito + +;
}
}
para (exterior = 0; exterior< 4="" ;="" outer++)="">
para (i = 0; i<4 ;="" i++)="" almost=""></4>

{
se (codearr [exterior] = = guessarr[i]&&flagarr[outer]==0)



{
flagarr [i] = 1;
quase + +;
}

}
printf ("%d, % d n quase de direita", mesmo, quase);
Return(Right);

}
privatevoid showresults(int flagarr[])
{

}
privatevoid outputarray(int outarr[])
{
int i = 0;
para (i = 0; i< 4="" ;="" i++)="">
{
printf ("%d", outarr[i]);
}
printf("\n\n");
}</time.h></stdlib.h></stdio.h>
resposta Resposta
O código fornecido é um programa em C para jogar Mastermind, onde o jogador tenta adivinhar um código composto por quatro números gerados aleatoriamente. No entanto, o programa atualmente não está gerando o resultado correto quando quase todos os números na adivinhação correspondem ao código, mas numa ordem diferente. Para corrigir isso, você pode alterar a função comparearray().

Em primeiro lugar, ao comparar os códigos, é necessário verificar não apenas se um número corresponde na mesma posição, mas também se ele corresponde em alguma outra posição. Para isso, você pode separar a lógica de verificação em duas partes: uma para verificar números na mesma posição e outra para verificar números em posições diferentes.

Dentro do loop da função comparearray(), você pode adicionar uma verificação para ver se o número na posição atual corresponde no código e, caso contrário, verificar se esse número corresponde em outra posição do código. Isso significa que cada número do código de adivinhação será verificado em duas condições separadas: uma para verificação direta e outra para verificação quase-correta.

Além disso, você pode adicionar contadores separados para os números que estão corretos na posição correta e para os números que estão corretos em outra posição. Com base nesses contadores, você pode gerar o resultado apropriado que informa ao jogador quantos números estão corretos na posição correta e quantos estão corretos em outra posição.

Após implementar essas mudanças, você deve testar o programa com vários conjuntos de dados de código e adivinhação para garantir que a lógica de verificação esteja funcionando corretamente em todos os casos.

Além disso, você pode considerar adicionar alguns comentários ao código para torná-lo mais legível e fácil de entender para outros programadores que podem precisar revisá-lo no futuro. Comentar as seções mais complexas do código e explicar a lógica por trás das operações pode ser muito útil.

Depois de fazer essas alterações, compile e execute o programa novamente e teste-o com diferentes combinações de códigos e adivinhações para garantir que a função comparearray() esteja gerando os resultados corretos. Isso deve corrigir o problema de quase quando houver mais de um número correspondente. Boa sorte!

ComentáriosComentários
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved