Info10/ArrayExperimente.java

190 lines
5.5 KiB
Java

/**
* Uebungen mit Arrays.
*
* Verschiedene Methoden, die einfache Operationen auf int-Arrays durchfuehren.
*
* Du kannst deine Loesungen mit der beigefuegten Testklasse automatisch
* ueberpruefen
* - Klicke dazu im Hauptfenster auf Werkzeuge -> Testen -> Tests starten
* - Sobald du glaubst, eine Funktion fertig programmiert zu haben,
* startest du die Tests und ueberzeugst dich im Testergebnisfenster,
* dass der Test fuer diese Funktion erfolgreich durchgelaufen ist.
* - Falls er fehlschlaegt, kannst du dort auf den entsprechenden Test klicken
* und nachschauen, was genau fehlgeschlagen ist.
*
*/
public class ArrayExperimente
{
public static int beispiel[]= new int[] {1, 3, 4, -13, 0, 70, -111};
public static int nochnArray[]= new int[] {20,21,22,23,24,25,26};
/**
* Gibt das uebergebene Array auf der Konsole aus.
* @param array, das ausgegeben werden soll.
*/
public static void arrayAusgeben(int[] array)
{
for(int i=0; i<array.length; i++)
{
System.out.println(array[i]);
}
}
/**
* Ermittelt, ob ein Wert im Array vorkommt, d.h. ob
* eines der Arrayelemente diesen Wert hat.
* @param gesucht zu suchender Wert.
* @param array Array, in dem gesucht wird.
* @returns ob gesucht im Array vorkommt.
*/
public static boolean istEnthalten(int gesucht, int[] array)
{
for (int i=0; i<array.length; i++)
{
if (array[i] == gesucht)
{
return true;
}
}
return false;
}
/**
* Ermittelt, an welchem Index im Array der Wert "gesucht" vorkommt.
* @param gesucht Wert, nach dem im Array gesucht wird.
* @param array Array, in dem gesucht wird.
* @returns den Index, an dem gesucht im Array vorkommt; -1, falls es
* nicht vorkommt.
*/
public static int indexVon(int gesucht, int[] array)
{
for (int i=0; i<array.length; i++)
{
if (array[i] == gesucht)
{
return i;
}
}
return -1;
}
/**
* Ermittelt den Wert des groessten im Array enthaltenen Elements.
* @param array Array, in dem gesucht wird. Es darf
* nicht leer sein.
* @returns Den groessten vorkommenden Wert.
*/
public static int maxWert(int[] array)
{
int maxWert = array[0];
for (int i=1; i<array.length;i++)
{
if (maxWert < array[i])
{
maxWert = array[i];
}
}
return maxWert;
}
/**
* Ermittelt den Index des groessten im Array enthaltenen Elements.
* @param array Array, in dem gesucht wird.
* @returns Den Index des groessten vorkommenden Werts.
*/
public static int maxIndex(int[] array)
{
int maxi = 0;
for (int i=0; i<array.length;i++)
{
if (array[maxi] < array[i])
{
maxi = i;
}
}
return maxi;
}
/**
* Ermittelt den Index des groessten im Array enthaltenen Elements.
* @param array Array, in dem gesucht wird.
* @returns Den Index des groessten vorkommenden Werts.
*/
public static int maxIndexKuerzer(int[] array)
{
// TODO: Formuliere diese Funktion als Einzeiler, indem du
// Funktionen, die du oben schon geschrieben hast, geschickt aufrufst.
// Diese Variante einfacher zu formulieren als mit einer Schleife
// (braucht allerdings mehr Rechenschritte--2 Stück).
return indexVon(maxWert(array), array);
}
/**
* Ermittelt die Summe ueber alle Arrayelemente.
* @param array Array, das aufaddiert wird.
* @returns Summe aller Arrayelemente.
*/
public static int querSumme(int[] array)
{
int summe = 0;
for (int i=0; i<array.length; i++)
{
summe = summe + array[i];
}
return summe;
}
/**
* Die Funktion erhoeht im urspruenglichen Array jeden Eintrag um "zuschlag".
* Es wird kein neues Array angelegt.
* @param array Zu manipulierendes Array. Es darf nicht leer sein.
* @param zuschlag diese Zahl wird zu jedem Arrayeintrag dazuaddiert.
*/
public static void addiereJeweilsD(int[] array, int zuschlag)
{
for (int i=0; i<array.length; i++)
{
array[i] = zuschlag + array[i];
}
}
/**
* Erstellt ein neues Array, in dem die Elemente des
* urspruenglichen Array in der umgekehrten Reihenfolge drin sind.
* @param array urspruengliches Array, darf nicht null sein
* @returns neues Array mit umgekehrter Reihenfolge.
*/
public static int[] arrayUmdrehen(int[] array)
{
int[] wendeArray = new int[array.length];
for (int i=0; i<array.length;i++)
{
wendeArray[i] = array[array.length -1 -i];
}
return wendeArray;
}
/**
* Dreht im bestehenden Array dessen Elemente in
* die umgekehrte Reihenfolge. Man sagt, die Funktion bearbeitet
* das Array "in place".
* @param wendeArray urspruengliches Array
*/
public static void arrayUmdrehenInPlace(int[] array)
{
// Diese Funktion loest die gleiche Aufgabe wie die obere, darf
// dafuer aber KEIN zusaetzliches Array benutzen, sondern muss
// (bis auf einzelne int-Variable) im wendeArray arbeiten.
// TODO...
}
}