/*
 * "Grundkurs Programmieren in Java - Band 1 (3. Auflage, 2006)I"
 * 2001-2006, Carl Hanser Verlag
 * Loesungsvorschlag zu Aufgabe 7.2 (Version 3.0)
 * (c) 2001-2006 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
 *
 * Methoden zum Spiegeln von int-Feldern -
 * einmal mit und einmal ohne Seiten-Effekte
 *
 */

public class Swap {

  /*
   * Methode gibt Kopie von 'feld' zurueck,
   * allerdings sind die Elemente gespiegelt
   */
  public static int[] swappedCopy (int[] a) {

    int[] ergebnis;

    ergebnis = new int[ a.length ];

    for (int i = 0; i < a.length; i++)
      ergebnis[i] = a[ a.length - 1 - i ];

    return ergebnis;
  }


  /*
   * Methode spiegelt uebergebenes Feld
   *
   */
  public static void swap (int[] a) {

    int halb;
    int hilf; // Hilfs-Variable fuer Dreiecks-Tausch

    halb = a.length / 2;

    for (int i = 0; i < halb; i++) {
      hilf                   = a[i];
      a[i]                  = a[ a.length - 1 - i ];
      a[ a.length - 1 - i ] = hilf;
    }

  }

  /*
   * gibt die einzelnen Elemente von 'feld' auf
   * der Standardausgabe aus
   *
   */
  public static void printArray(int[] feld) {

    for (int i = 0; i < feld.length; i++)
      System.out.print ( feld[i] + "\t" );

    System.out.println();
  }


  public static void main (String[] args) {

    int[] feld1 = { 1, 2, 3, 4, 5 };
    int[] feld2;

    System.out.print( "feld1: " );
    printArray( feld1 );

    feld2 = swappedCopy( feld1 );

    System.out.print( "feld2: " );
    printArray( feld2 );

    System.out.print( "feld1: " );
    printArray( feld1 );

    // jetzt mit "Seiteneffekten" spiegeln
    swap( feld1 );
    System.out.print( "feld1: " );
    printArray( feld1 );

  }

}
