主谋-在错误的位置检查数字(或颜色)(C)

主谋-在错误的位置检查数字(或颜色)(C),c,C,我试着用数字1-6来编写智囊团的代码,但我做不到这样的部分,它会告诉我有多少数字在错误的位置。有时它工作得很好,但也有一些情况下,它的错误 这里有一个例子,如果随机数是{5,2,3,3},输入是{5,3,2,2},而不是说“1个正确位置,2个错误位置”,它说“1个正确位置,3个错误位置”。我不知道如何修改我写的东西 for(j=0;j<4;j++){ //rp=rightPlace; wp=wrongPlace; c=code(random); in=input i

我试着用数字1-6来编写智囊团的代码,但我做不到这样的部分,它会告诉我有多少数字在错误的位置。有时它工作得很好,但也有一些情况下,它的错误

这里有一个例子,如果随机数是{5,2,3,3},输入是{5,3,2,2},而不是说“1个正确位置,2个错误位置”,它说“1个正确位置,3个错误位置”。我不知道如何修改我写的东西

    for(j=0;j<4;j++){ //rp=rightPlace; wp=wrongPlace; c=code(random); in=input
        if(c[j]==in[j])rp++;
    }
    for(j=0;j<4;j++){
        for(i=0;i<4;i++){
            if(c[j]==in[i]){wp++;break;}
        }
    }wp-=rp;

对于(j=0;j问题在于这一部分:

for(j=0;j<4;j++){
    for(i=0;i<4;i++){
        if(c[j]==in[i]){wp++;break;} // problem here
    }
}

for(j=0;jIt很难准确地说出您的问题是什么。尝试创建一个示例来给我们-这比只看不完整的代码片段更容易调试。还尝试给我们一个更具体的问题陈述-一次只关注一种不希望出现的行为。我想您必须描述(或显示)如果您想得到任何有用的答案,请使用更多的代码。添加空格也没有坏处。创建随机数组和输入数组的临时副本。在正确位置计算项目时,更改数组项(在两个临时数组中)到0。当计算错误位置的项目时,忽略0。您的代码没有显示任何内容。我怀疑这是由于缺少printf’s,而不是获得另一个数组。我只是像您一样更改了这两个变量,并在if语句中添加了“in[I]=0”来完成此任务。无需再做任何更改!
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main (void){
int c[4],in[4],i,j,ct=0,sc=0,se=0;
srand(time(NULL));

//numeros aleatorios de 1 a 6
for(i=0;i<4;i++){
    c[i]=rand()%6+1;
}

do{
    ct++;
    printf("Tentativa: ");
    scanf("%d %d %d %d",&in[0],&in[1],&in[2],&in[3]);
    //quantos no sitio certo
    for(j=0;j<4;j++){
        if(c[j]==in[j])sc++;
    }//quantos que existem repetidos independentemente do sitio
    for(j=0;j<4;j++){
        for(i=0;i<4;i++){
            if(c[j]==in[i]){se++;in[i]=0;break;}//podemos alterar o valor do input para 0 porque e alterado repetidamente e nao tem um valor fixo
        }
    }
    se-=sc; //a diferenca destes diz quantos certos estao no sitio errado
    printf("Sitio certo: %d\nSitio errado: %d\n",sc,se);
    if (sc==4) break;
    se=0;sc=0;//repor
}while(0==0);//existe break, nao vale apena criar mais variaveis 
printf("Descoberto em %d tentativa(s)!\n",ct);

return 0;
}
for(j=0;j<4;j++){
    for(i=0;i<4;i++){
        if(c[j]==in[i]){wp++;break;} // problem here
    }
}