2013-03-06 23 views
0

我想比較數組元素和想法是收集所有不同的元素到其他temp []數組。我認爲這是要去哪裏錯了......無法理解......請幫我比較數組元素並嘗試向其他數組添加不相似的元素不工作?

#include <stdio.h> 
#include <stdlib.h> 

#define SIZE 30 

int my_arr[SIZE] = {10,20,45,63,89,20,15,12,89,24,12,10,89,25,64,39,37,64,95, 
        27,23,58,97,23,18,56,94,76,32,11              
        }; 


int main() 
{ 

    int i,j,temp_arr[100]; 



    for(i=0;i<SIZE;i++) 
    { 
    for(j=0+i; j<SIZE; j++) 
    { 
     if(*(my_arr+i)!=*(my_arr+j)) 

       *(my_arr+i) = temp_arr[i]; 

    } 

     } 
     return 0; 
} 
+0

是的,這是正確的......但沒有得到它是怎麼了......我是新的C ...我相信有些人會發現它在這裏。 ..感謝 – studyembedded 2013-03-06 04:23:39

+0

'temp_arr'沒有初始化,但是你正在複製一些東西。這不好!您可能想要撤消分配;您還需要將'temp_arr'分別從'i'和'j'索引,因此您需要額外的索引'k'來記錄您在'temp_arr'中的位置。 – 2013-03-06 04:24:41

+0

謝謝喬納森...你是對的,我需要扭轉作業..感謝您的幫助 – studyembedded 2013-03-06 04:32:41

回答

1

這裏:

*(my_arr+i) = temp_arr[i]; 

temp_arr[j]尚未初始化且將其分配給my_arr[i]。你描述聽起來像你想:

temp_arr[i] = *(my_arr+i); 

但你最終會在temp_arrholes。所以也許你需要另外一個索引來計算temp_arr中的物品。

喜歡的東西:

int tmp_cnt = 0; 
for(i=0;i<SIZE;i++) { 
    for(j=0+i; j<SIZE; j++) { 
     if(*(my_arr+i)!=*(my_arr+j)) 
       temp_arr[tmp_cnt++] = *(my_arr+i); 
    } 
} 
+0

幾乎我所評論的 - 但你的回答。 – 2013-03-06 04:26:38

+0

是的,這是一樣的,你評論,謝謝 – perreal 2013-03-06 04:28:13

+0

得到它傢伙其實我錯了試圖從temp_arr []複製,實際上我應該從my_arr []複製到temp_arr [] ...它解決了如下 temp_arr [i] = *(my_arr + i); – studyembedded 2013-03-06 04:30:48