2015-12-12 287 views
-1

我正在解決一個學校問題。我應該比較兩個數組並找出不匹配和完美匹配的數目。例如:我有Array [4] = {8,4,8,8}和ArrayB [4] = {4,8,8,4}。它應該打印出1個完美匹配和3個不匹配。我的代碼是這樣的:。完美匹配的作品,但不匹配不。請幫助:錯誤匹配意味着它具有相同的值,但在陣列中的不同位置。完美匹配意味着它在兩個數組中具有相同的值和相同的位置。兩個陣列與C的比較

int m,n,j; 
int perfect = 0; 
int mis_match=0; 
for (m=0;m<4;m++) 
{ 
    if(A[m]=B[m]) 
    perfect++; 
    A[m]==B[m]=-1; 
    else 
    for (n=0;n<4;n++) 
    { 
     for (j=0;j<4;j++) 
     { 
      if(A[n]== B[j]) 
      mis_match++; 
      break; 
     } 
    } 
    printf("we have %d perfect matches, %d mismatches", perfect,mis_match); 
    return 0; 
+2

不應該不匹配只是數組長度 - 完美匹配? – Annabelle

+5

1.比較運算符是'==',** not **'='。 2.您尚未初始化「完美」。 – Downvoter

+0

這是一個難以理解的混亂。正確格式化和縮進。 – Olaf

回答

1

您似乎在這裏有一些錯誤。第一個:

int perfect, mis_match; // need to be intialized. 

所以你必須將它們設置爲0

int perfect = 0; 
int mis_match = 0; 

你還必須要注意的是:if(A[m]=B[m])(在你的第一個循環)應if(A[m]==B[m])(你有比較操作錯誤)。

在第二個不匹配集中,如果數組大小相同,那麼您可以簡單地執行array length - matches = mismatches。因爲如果它不匹配,那就是不匹配。

+0

你誤解了錯誤。 Mis_Match表示它具有相同的值,但是堆棧中的位置不同。 –

+0

@TrungNguyenHuu在這種情況下,我想。但我認爲這個問題的措辭是匹配或不匹配之間的選擇。無論如何,第一位代碼仍然需要修復。 – Annabelle

0

代碼:

int a[4] = {8,4,8,8}; 
int b[4] = {4,8,8,4}; 
int mc = 0; 
for(int i=0; i < 4; ++i) 
    if (a[i] == b[i]) 
    ++mc; 
printf("we have %d perfect matches, %d mismatches", mc, 4 - mc); 
+0

遞歸版本呢? –

0

無論我知道你需要不使用它增加了時間複雜度的任何嵌套循環。我認爲這很簡單。
這裏是代碼 -

int main(){ 
int A[4] = {8,4,8,8}; 
int B[4] = {4,8,8,4}; 
int perfect = 0; 
int mis_match = 0; 
for (int i = 0; i < 4; i++){ 
    if(A[i] == B[i]) 
     perfect++; 
    else 
     mis_match++; 
} 

printf("we have %d perfect matches, %d mismatches", perfect,mis_match); 
0

首先,您需要將變量mis_match初始化爲0。實際上你甚至不需要這個變量。您只需檢查第一個數組中的每個元素與第二個數組的每個元素,並且如果它們匹配則增加perfect。然後計算陣列大小與perfect之間的差異。這是不匹配的數量。 您的修改後的代碼看起來應該是這樣

int perfect=0,m=4; 
int A[4]={8,4,8,8},B[4]={4,8,8,4}; 
for(i=0;i<m;i++) 
{ 
    if(A[i]==B[i]) 
     perfect++; 
} 
printf("We have %d perfect matches and %d mismatches",perfect,m-perfect); 

您已經使用if(A[m]=B[m]),這是不對的。該聲明將在A[m]中分配值B[m]而不是檢查它們是否相等。您需要使用==運算符來檢查它們的相等性。