【发布时间】:2021-12-28 18:36:52
【问题描述】:
我的主要默认设置是分析逻辑。有什么要求。 分析函数中的处理算法是练习的主要兴趣。
我需要比较名为essai[] 和ref[] 的玩家提议。 ref[] 是由 random 函数生成的 4 位数字。
一个数字被算作“正好在正确的地方”,不能算作“正确的数字在错误的地方”。
示例:ref[] = {1, 2, 3, 4} 和 essai[] = {1, 5, 7, 3}。它将在“完全正确的地方”计为 1 个数字,在“错误的地方”计为 0 个数字。不能超过一次。其他方式也一样。
我从正确的地方开始,如果有的话,我将essai[] 和ref[] 中的两个数字都替换为-1。我对“正确的数字在错误的地方”做了同样的事情。
到目前为止,这是我的代码:
void analyse(int ref[], int essai[]) {
int i, j, o, RefTmp[4], NbPos, NbChif;
for(i = 0; i < 4; i++){
RefTmp[i] = ref[i];
}
for (j = 0; j < 4; j++) { // [1] = 5 : [1] = 2
for (o = 0; o < 4; o++) {
if (RefTmp[j] == essai[o]) {
if (j == o) {
++NbPos;
RefTmp[j] = essai[o] = -1;
printf("One number in the right place\n");
break;
}
else {
++NbChif;
RefTmp[j] = essai[o] = -1;
printf("One number in the wrong place\n");
break;
}
}
}
}
}
我的理解是我需要创建 2 个for 循环来比较两个数组,但是当有多个“正确的数字错误”时(例如),循环也会打印多次。它只能打印一次。
我做了一个RefTmp[],这样真正的ref[]就不会在这个过程中被破坏。
【问题讨论】:
标签: c compare array-comparison