Hans: matrix spiralförmig durchsuchen

Beitrag lesen

main() {
int x=8;
int y=13;
int end_x;
int end_y;
int x_laenge=1;
int y_laenge=6;
int richtung=1;

/* Erst mal in der Mitte raus nach oben, damit es symmetrisch wird */
   while (y != 7) {
      printf("x=%d, y=%d\n",x,y);
      y--;
   }

/* Jetzt unterschiedlich lange Strecken ablaufen, da es keine X*X sondern ein
e Y*X-Matrix ist, wobei X != Y (damit gewisse Erbsenzaehler zufrieden sind) */

while ((y > 0) && (x > 0)) {
      if (richtung==1) { /* Rechts rum, in X-Richtung */
         end_x=x+x_laenge;
         while (x != end_x) {
            printf("x=%d, y=%d\n",x,y);
            x++;
         }
         richtung=2;
         y_laenge++; /* Y-Laenge um 1 erhoehen, damit man nicht gegen gerade gez
ogene Linie stoesst */
      }
      if (richtung==2) { /* Abwaerts in Y-Richtung */
         end_y=y+y_laenge;
         while (y != end_y) {
            printf("x=%d, y=%d\n",x,y);
            y++;
         }
         richtung=3;
         x_laenge++;
      }
      if (richtung==3) { /* Links rum, in X-Richtung */
         end_x=x-x_laenge;
         while (x != end_x) {
            printf("x=%d, y=%d\n",x,y);
            x--;
         }
         richtung=4;
         y_laenge++; /* Y-Laenge um 1 erhoehen, damit man nicht gegen gerade gezogene Linie stoesst */
      }
      if (richtung==4) { /* Aufwaerts, in Y-Richtung */
         end_y=y-y_laenge;
         while (y != end_y) {
            printf("x=%d, y=%d\n",x,y);
            y--;
         }
         richtung=1;
         x_laenge++; /* X-Laenge um 1 erhoehen, damit man nicht gegen gerade gez
ogene Linie stoesst */
      }
   }
}

So, sofern copy&paste nicht irgend einen Mist gemacht hat, muesste es so klappen. Statt printf dann entsprechend System.out.println() machen und die entsprechenden Klassen importieren.

Gruß

Hans