我有以下问题:
这里是...输出摘要如下。
输出摘要:测试两个数组以确定它们是否在同一位置包含相同的值。编写一个测试函数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数组中获取正确的值。
答案 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()
。在整个阵列对上调用一次。