2014-12-20 11 views
-1
int main(array<System::String ^> ^args) 

{ 

    int arr[]={1,2,3,2,9,8,1,2,3,9}; 
    int a[9]; 
    int size = sizeof(arr)/sizeof(arr[0]); 
    int str[256]= {'\0'}; 
    int i = 0; 
    for(i ; i < size ; i++) 
    { 
     if(str[arr[i]] == 0) 
     str[arr[i]]= 1; 
    } 
    for(i = 0 ; i < size ; i++) 
    { 
     if(str[arr[i]] == 1) 
     { 
      a[i] = arr[i]; 
     } 
    } 
    for(i=0 ; i < size ; i++) 
    { 
     printf("%d->",a[i]); 

    } 


    return 0; 
} 

仍然是一個,我老的數據...不知道這裏WATS失蹤......新陣列中使用HashMap中

任何幫助將高度讚賞刪除重複從數組條目。

在此先感謝。

+0

可能重複[算法:從數組中刪除重複整數的有效方法](http://stackoverflow.com/questions/1532819/algorithm-efficient-way-to-remove-duplicate-integers -from-an-an-an-an-an-array) –

+0

我已經看到這個問題,但不知道我的代碼在這裏輸入錯誤... – Anand

+1

你沒有初始化'a'。另外,這不是C.看起來像C++ - CLI。如果您想用C語言編程,請確保使用C編譯器。 – Mat

回答

4

邏輯錯誤

  • 最終陣列不會去,直到size
  • a索引是錯誤的

只需使用一個循環來實現這一目標,分析如下:

int i = 0,j=0; 

for(; i < size ; i++) 
{ 
    if(str[arr[i]] == 0) 
    { 
     str[arr[i]]= 1; 
     a[j++] = arr[i]; 
    } 
} 

現在迭代到j最終陣列上a

+0

工作謝謝...我可以在一個單一的循環確實做同樣的事情。謝謝 – Anand