2017-02-28 2 views
-2

ich habe 5700 reihen und 3 spalten von 2d array. müssen die wiederholte Zeile aus diesem Array entfernen und nur eine Zeile aus mehreren wiederholten Zeilen drucken. zählen = 5700. zum Beispielentfernen duplikate in 2-d-array

24.742235 0.005334 0.052465  
27.345229 -0.222687 0.266042  
27.345229 -0.222687 0.266042  
25.528389 -0.063540 0.117000  
24.742235 0.005334 0.052465  
25.528389 -0.063540 0.117000  
24.742235 0.005334 0.052465  
25.528389 -0.063540 0.117000  
24.742235 0.005334 0.052465  
25.528389 -0.063540 0.117000  
27.345229 -0.222687 0.266042  
24.742235 0.005334 0.052465  
27.345229 -0.222687 0.266042  
25.528389 -0.063540 0.117000  
25.528389 -0.063540 0.117000  
27.345229 -0.222687 0.266042  
27.345229 -0.222687 0.266042  
24.742235 0.005334 0.052465  
24.742235 0.005334 0.052465  
27.345229 -0.222687 0.266042  

Code:

for(p=0;p<count;p++) 
{ 
    for(ppp=p+1;ppp<count;ppp++) 
    { 
    if(plane[ppp][1]!=plane[p][1]) 
    { 
     printf("%lf\t%lf\t%lf\n",plane[p][0],plane[p][1],plane[p][2]); 
     printf("%lf\t%lf\t%lf\n",plane[ppp][0],plane[ppp][1],plane[ppp][2]); 
    } 
    } 
} 

Ich mag die doppelten Zeilen aus diesem Beispiel entfernen. Reihe 2 und Reihe 3 sind gleich. so will ich nur angezeigt Zeile entweder 2 oder 3

+5

Ok. Was ist das Problem? – MayurK

+0

Ich möchte die doppelten Zeilen aus diesem Beispiel entfernen. Reihe 2 und Reihe 3 sind gleich. also möchte ich nur die Zeile 2 oder 3 anzeigen. –

+1

Sie haben vergessen, den Code zu posten. – Lundin

Antwort

0

Eine einfache Funktion, dies zu tun ist die folgende (Anmerkung: noch getestet werden, so sehe dies als Umriss):

int A[5700][3]; 

int elimdups(void) 
{ 
    int i, j, k, m, n=5700; 
    for (i=0; i<n-1; i++) {      // for all rows 
     for (j=i+1; j<n-1; j++) {    // for all next rows 
      for (k=0; k<3; k++)     // for each cell 
       if (A[i][k]!=A[j][k]) break; // check cells equal 

      if (k<3) {       // row j is duplicate of row i 
       for (k=j; k<n-1; k++)   // move all rows up 
        for (m=0;m<3;m++) 
         A[k][m]= A[k+1][m]; 
       n--; 
      } 
     } 
    } 
    return n; 
}