Hans: c/c++: Doppelte Strings im Array erkennen

Beitrag lesen

Hallo Max,

so, nachdem ich hier schon meinen dummen Kommentar abgeliefert habe, kommt noch etwas Code hinterher ;-)

#include <stdio.h>

main() {
   char my_Array[10][20]={"A","A","C","D","E","F","G","H","I","J"}; /* "A" ist doppelt ! */
   int start;         /* Wo soll bei jedem Durchlauf gestartet werden? */
   int array_laenge;  /* Wie lang ist das Array? */
   int i;             /* Die uebliche Laufvariable */
   int doppelt=0;     /* Ist der aktuelle String doppelt vorhanden? */

array_laenge=10;   /* Hier bei eigenem Array entsprechend anpassen */
   start=0;           /* Bei ersten Element starten. C beginnt bei 0 */
   while ((doppelt==0) && (start < (array_laenge-1))) { /* Solange nichts doppelt und die Startposition noch nicht das letzte Element erreicht hat */
      i=start+1;      /* Mit der Suche beim nächsten Element anfangen, sonst findet sich das Element selbst */
      while ((doppelt==0) && (i < array_laenge)) { /* Solange beim aktuellen Durchlauf keine doppelten Eintraege gefunden werden */
         if (strcmp(my_Array[start],my_Array[i])==0) { /* Wenn das Start-Element und das aktuelle Element gleich sind */
            doppelt=1;  /* Dann beende die while-Schleife, indem das Kriterien nicht mehr erfuellt ist */
         }
         else
            i++;        /* Andernfalls das naechste Element anfassen */
      }
      if (doppelt==0)   /* Wenn nach dem letzten Durchlauf kein doppelter String gefunden wurde */
         start++;       /* Beginne den nächsten Durchlauf mit dem nächsten Element des Arrays */
   }
   if (doppelt==1) {    /* Wenn ein String doppelt vorkommt */
      printf("Der %d. und der %d. String des Arrays sind identisch !\n",start,i); /* Dann die beiden Positionen ausgeben. Haette man start ohne die vorherige Ueberpruefung hochgezaehlt, waere hier eine falsche Position! */
   }
   else {
      printf("Keine doppelten Strings im Array!\n"); /* Gib am Ende aus, dass alles OK ist */
   }
}

Gruß

Hans