在相同位置测试具有相同值的数组

时间:2010-12-07 01:55:19

标签: c++

我有以下问题:

这里是...输出摘要如下。

输出摘要:测试两个数组以确定它们是否在同一位置包含相同的值。编写一个测试函数isEqual的主程序。使用原型:bool isEqual(int A [],int B [])

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;


#define FLUSH  cin.clear(); while(cin.get()!='\n');

bool isEqual (int A[], int B[]);

int main()
{
    int index;
    bool matches[10] = {0, 1, 0, 0, 0, 1, 0, 0, 0, 0};
    int A[10] = {2, 3, 4, 5, 8, 11, 15, 7, 3, 1};
    int B[10] = {1, 3, 7, 2, 3, 11, 8, 9, 10, 0};

    for (index = 0; index <= 9; index++)
    {
        matches[index] = isEqual (A[index], B[index]);
    }
    if (matches[index] == 1)
    {
        cout << 1 << endl;
    }
}

bool isEqual (int A[], int B[])
{
     return (A == B);
}

我必须使用显示的isEqual()原型,但不确定如何在matches数组中获取正确的值。

2 个答案:

答案 0 :(得分:1)

使用[]“运算符”时,它会检查该位置数组的

让我们说阵列A,A[1] == 3,对吗?同样适用于B,B[2] == 7 请记住,数组是基于0的,这意味着元素0实际上是数组中的第一个元素(B[0] == 1)。

所以当你打电话给“isEqual(A[index], B[index])”时,实际发生的是

(假设索引== 0)

isEqual(2, 1);

你需要意识到你实际上是在传递两个数字而不是ARRAYS。

我不喜欢为你做作业,因为你不会学到任何东西。但为了让你保持正确的轨道,我很确定这个问题可以改写如下

写一个函数“isEqual”,它有两个int数组 在该函数内部,比较循环内两个数组的相同索引位置的每个数字 if (A[index] == B[index])...

如果所有这些比较都是真的,那么两个数组都相等。

我建议你也为数组大小声明一个全局常量(10)。通常,IsEqual的原型是IsEqual(int A[], int B[], int ARRAY_SIZE),但你的原型不是那样的,所以你必须知道你的数组有多大

我希望它有所帮助

答案 1 :(得分:0)

在当前形式中,isEqual()不仅不正确(它只是比较两个指针的相等性),也无法正确实现,因为无法分辨输入数组的大小。假设你的教授不是白痴,我只能猜测你会发现它没有通过考试。

至于获取“匹配数组中的正确值”,我认为你不应该为每个元素调用isEqual()。在整个阵列对上调用一次。