相同位置具有相同值的测试阵列

问题描述:

我有以下问题:相同位置具有相同值的测试阵列

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

输出摘要:测试两个数组以确定它们是否在同一位置包含相同的值。编写一个测试函数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()的原型,但不知道怎么去比赛数组中的正确的价值观。

+3

你所要做的是根本错误的,我建议你修改一下你的教授一直教你的东西。 – 2010-12-07 02:01:40

+0

'isEqual`试图做什么?如果你可以评论你的代码,说明你是如何处理这个问题的,那么帮助你会更容易。 – Maxpm 2010-12-07 02:15:20

当您使用[]“操作员”,它会检查该位置的阵列的

因此,可以说数组A,A[1] == 3,对不对? B同样适用,B[2] == 7 请记住,数组是基于0的,这意味着元素0实际上是数组中的第一个元素(B[0] == 1)。

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

(假设指数== 0)

isEqual(2, 1); 

你必须意识到你其实传递了两个数字而不是阵列。

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

写一个函数“isEqual”,它需要两个数组int
内部的功能,比较在两个阵列相同的索引位置的每个编号在一个循环内
if (A[index] == B[index])...

如果所有这些比较为真,则数组是相等的。

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

我希望它能帮助

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

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