所以我有两个数组,我需要找到一种方法来查找C ++中两个不同数组之间的等效性。这是我做的功能:
bool equivalent(int a[], int b[], int n)
for (int i=0; i < n; i++){
if (b[(i + 2) % 5] == a[i])
return true;
else return false;
}
}
这是数组:
int main() {
cout << boolalpha;
int a1[5] = {1, 2, 3, 4, 5};
int a2[5] = {3, 4, 5, 1, 2};
cout << equivalent(a1, a2, 5) << endl;
我知道我的关节矫正术是正确的,因为例如a2 [4],4加2为6,mod 5为1,并且在a1 [0]位置,值为2,该值与a2 [4]值。我唯一的问题是,结果应该为true,但是因为for循环从0开始,所以整个函数陷入混乱,因为第二个数组索引需要从另一个数字开始才能起作用。我将如何解决这个问题?
答案 0 :(得分:0)
我将如何解决这个问题?
通过使用调试器。逐行浏览程序。如果行为与预期的不同,那么您已经找到了问题。
程序有两个问题:
我知道我的关节矫正术是正确的,因为例如a2 [4],4加2为6,mod 5为1,并且在a1 [0]位置,值为2,该值与a2 [4]值。
但是您要比较a1 [0]与a2 [2],而不是a2 [4]。您已经颠倒了参数的顺序。
您只比较a1 [0],然后返回结果。为了比较整个数组,在检查完所有元素之前,您不得返回(除非返回false的分支可以提早返回)。
答案 1 :(得分:0)
我认为简单的方法是将两个数组都转换为字符串,然后进行比较。