C++布尔问题(两个数组之间的比较)

问题描述:

我有一个问题要做。我已经做了一些部分,但是我卡住了,不知道下一步该做什么。C++布尔问题(两个数组之间的比较)

问题:“给出两个整数数组,名为A和B.一个包含AMAXELEMENTS,另一个包含BMAXELEMENTS。编写一个布尔值函数,返回true,如果A中至少有一个点同在B中的点,而假的,如果有两个阵列之间不匹配。“

两个数组都是由我做出了决定,我想如果我知道如何比较两个数组我会没事的,我将能够完成我的问题。

这是我迄今为止(我改变AMAXELEMENTS到AMAX,并BMAXELEMENTS到BMAX):

#include <iostream> 
using namespace std; 

int main() 
{ 
    const int AMAX = 5, BMAX = 6; 
    int i; 
    bool c1 = true, c2 = false; 
    int A[AMAX] = { 2, 4, 1, 5, 9 }; 
    int B[BMAX] = { 9, 12, 32, 43, 23, 11 }; 

    for (i = 0; i < BMAX; i++) 
     if (B[i] == A[i])  // <---- I think this part has to look 
           //  different, but I can't figure it out. 
      cout << c1 << endl; 
     else 
      cout << c2 << endl; 
    return 0; 
} 
+0

嗯未定义行为。 – kennytm 2010-05-10 19:42:37

+2

如果存在'i'使得'A [i] == B [i]'或者存在'i,j'使得'A [i] == B [j],您是否需要返回true ]'? – 2010-05-10 19:43:52

+2

这里更严重的问题是,你要超过数组A的范围! BMAX高于AMAX,你的循环将最终检查数组A后面的内存,它甚至不会被分配给它! – LukeN 2010-05-10 19:46:26

这看起来像功课,所以我不打算喂你答案。但我会指出一些基本问题。

首先,你可以尝试定义返回true的功能/假:

bool has_identical_value(int A[], size_t A_MAX, int B[], size_t B_MAX) 
{ 
    bool answer = false; 

    ... your homework goes here ... 

    return answer; 
} 

二是要确保你永远不会引用A[i]其中i >= A_MAX,你永远不引用B[j]其中j >= B_MAX

+0

这实际上是一个样本考试问题,我试图按照我的做法来做。 – Martin 2010-05-10 19:52:01

您应该遍历2个数组,而不是1个数组进行比较。否则你将与9,4比2与12等

这里是一些指向了正确的方向:

for(i=0;i<BMAX;i++) 
{ 
    for (j=0;j<AMAX;j++) 
    { 
     if (B[i]==A[j]) 
     { 
     } 
     else 
     { 
     } 
    } 
} 

你应该把它包在一个函数作为你的问题的状态。

首先你必须写一个函数。然后学习功能,因为它看起来像目前你不知道什么功能。

这是暗示,你的循环做错了什么?

for(i=0;i<BMAX;i++) 
    if (B[i]==A[i]) //A[BMAX - 1]??? 
+0

不需要讽刺(我没有你) – 2010-05-10 21:45:12

+0

@Romain Hippeau ???????? – doc 2010-05-11 08:56:32

+0

我刚刚看到“你没有线索”这个短语,有点讽刺。 – 2010-05-11 14:24:43

我的回答再次...夫妇的这个工作小时后:) 感谢您的帮助!

包括

using namespace std; bool myBool(int,int,int [],int []);};}}

int main(){ 

    const int SIZEA=5; 
    const int SIZEB=4; 
int A[]={54,65,76,67,4}; 
    int B[]={23,435,67,5}; 

    if (myBool(SIZEA, SIZEB,A,B)) 
    cout<<"TRUE"<<endl; 

    else 
    cout<<"FALSE"<<endl; 
    return 0; 

}

bool myBool(int AMAXELEMENTS, int BMAXELEMENTS, int A[], int B[]){ 
    int i,j; 

    for(i=0;i<AMAXELEMENTS;i++){ 
    for(j=0;j<BMAXELEMENTS;j++){ 
     if(A[i]==B[j]) 
      return true;  
    } 
    } 
    return false; 

}