2010-12-07 158 views
0

我有以下問題:相同位置具有相同值的測試陣列

這裏是...輸出摘要如下。

輸出摘要:測試兩個數組以確定它們是否在同一位置包含相同的值。編寫一個測試函數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

回答

1

當您使用[]「操作員」,它會檢查該位置的陣列的

因此,可以說數組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),但你的原型是不是這樣的,所以你必須知道你的陣列有多大

我希望它能幫助

0

在當前形式中,isEqual()不僅不正確(它只是比較兩個指針是否相等),但也無法正確實現,因爲無法確定輸入數組的大小。假設你的教授不是白癡,我只能猜測你會發現它沒有通過你的測試。

至於獲得「匹配數組中的正確值」,我認爲你不應該爲每個元素調用isEqual()。在整個陣列對上調用一次。

相關問題