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

时间:2010-05-10 19:40:28

标签: c++

我有问题要做。我已经做了一些部分,但是我坚持了,并且不知道下一步该做什么。

问题:“你有两个整数数组,名为A和B.一个包含AMAXELEMENTS,另一个包含BMAXELEMENTS。写一个布尔值函数,如果A中至少有一个点,则返回true与B中的一个点相同,如果两个数组之间没有匹配则为false。“

这两个数组由我组成,我想如果我知道如何比较两个数组,我会很好,我将能够完成我的问题。

这是我到目前为止(我将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;
}

4 个答案:

答案 0 :(得分:4)

这看起来像是家庭作业,所以我不打算给你答案。但我会指出一些基本问题。

首先,您要尝试定义一个返回true / false的函数:

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

答案 1 :(得分:2)

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

这里有些指向正确的方向:

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

你应该将它包装在一个函数中,如问题所示。

答案 2 :(得分:0)

首先,你必须写一个函数。然后了解函数,因为它看起来像你现在还不知道函数是什么。

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

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

答案 3 :(得分:0)

我的回答......经过几个小时的工作:)  谢谢你的帮助!

包括

使用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;  

}