DCV 2024 09/Strukturierte Programmierung Uebungen/Arrays: Unterschied zwischen den Versionen
Gyula (Diskussion | Beiträge) Die Seite wurde neu angelegt: „Im Folgenden finden sich Aufgaben für Arrays und deren Sortierung. === Aufgabe: Number Array === Erstelle ein {{JSL|int[]}} mit der Dimension von Benutzerangabe und befülle mit 1, 2, 3, usw. Erstelle ein zweites {{JSL|int[]}} und befülle mit Zahlen entsprechend der Größe ..., 3, 2, 1. === Aufgabe: Kopie === Erstelle eine Funktion, die aus dem Parameter-Array eine Kopie erstellt. {{JML|code= public static int[] makeACopy(int[] original){ } }}…“ |
Gyula (Diskussion | Beiträge) |
||
| (4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 27: | Zeile 27: | ||
# Gib es mit Hilfe einer '''foreach-Schleife''' aus. | # Gib es mit Hilfe einer '''foreach-Schleife''' aus. | ||
# Gib es mit Hilfe einer '''fori-Schleife''' aus. Das Ziel ist eine identische Ausgabe, wie {{JSL|Arrays.toString()}} | # Gib es mit Hilfe einer '''fori-Schleife''' aus. Das Ziel ist eine identische Ausgabe, wie {{JSL|Arrays.toString()}} | ||
# Gib den zweiten, fünften und zehnten Wert des Arrays aus. | # Gib den zweiten, fünften und zehnten Wert des Arrays aus. Falls in Input Array die Werte nicht vorhanden sind, schreibe „nicht vorhanden“. | ||
# Gib jeden zweiten Wert des {{JSL|int[]}} mit Hilfe einer '''Schleife''' aus. | # Gib jeden zweiten Wert des {{JSL|int[]}} mit Hilfe einer '''Schleife''' aus. | ||
| Zeile 46: | Zeile 46: | ||
=== Aufgabe: Random Number Array Min/Max/Avg === | === Aufgabe: Random Number Array Min/Max/Avg === | ||
Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von '''1''' bis '''100'''. Erstelle jeweils eine Methode für das '''Minimum''', das '''Maximum''' und den '''Durchschnitt'''. Die Methoden sollen jeweils den Wert zurückgeben (nicht Ausgeben). In der {{JSL|main}} Methode Rufe die Methoden mit den Zufallszahlen auf und gib diese aus. | Erstelle ein {{JSL|int[]}} und befülle es mit Zufallszahlen von '''1''' bis '''100'''. Erstelle jeweils eine Methode für das '''Minimum''', das '''Maximum''' und den '''Durchschnitt'''. Die Methoden sollen jeweils den Wert zurückgeben (nicht Ausgeben). In der {{JSL|main}} Methode Rufe die Methoden mit den Zufallszahlen auf und gib diese aus. | ||
{{JML|code= | |||
Version 1) | |||
[89, 86, 100, 87, 93, 81, 97, 95, 92, 98] | |||
Max Value found in this Array is = 100 | |||
Max Value found at Position 2 | |||
Erstelle zwei weitere Funktionen, die den '''Index''' des Minimums und des Maximums zurückgeben. | Version2) | ||
[94, 99, 83, 86, 96, 92, 92,...] | |||
Max Value found in this Array is = 100 | |||
Index position found the highest Number: [17, 37, 43, 44] | |||
}} | |||
* Erstelle zwei weitere Funktionen, die den '''Index''' des Minimums und des Maximums zurückgeben. | |||
* Erstelle eine weitere Funktion, die mehrere Index Positionen zurück gibt, wenn der Max oder Min Wert, mehr als einmal vorkommt. | |||
=== Aufgabe: Bubblesort mit Zahlen === | === Aufgabe: Bubblesort mit Zahlen === | ||
| Zeile 127: | Zeile 140: | ||
# Die Spielregeln finden sich [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens#Die_Spielregeln hier]. | # Die Spielregeln finden sich [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens#Die_Spielregeln hier]. | ||
# Als Ausgangsfeld verwende folgende 2D-Arrays: | # Als Ausgangsfeld verwende folgende 2D-Arrays: | ||
## {{ | ## {{JML|code= | ||
## {{ | public static final int[][] GLEITER = { | ||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, | |||
{0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
}; | |||
}} | |||
## {{JML|code= | |||
public static final int[][] SEGLER = { | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | |||
}; | |||
}} | |||
## Ein zufällig generiertes Array | ## Ein zufällig generiertes Array | ||
# Verwende nach jedem Durchgang folgenden Code (dieser verlangsamt die Ausgabe) {{JML|code= | # Verwende nach jedem Durchgang folgenden Code (dieser verlangsamt die Ausgabe) {{JML|code= | ||
| Zeile 137: | Zeile 176: | ||
} | } | ||
}} | }} | ||
# Rufe vor der Ausgabe {{ | # Rufe vor der Ausgabe {{JML|code= | ||
public static void clearScreen() { | |||
System.out.print("\033[H\033[2J"); | |||
System.out.flush(); | |||
} | |||
}} auf | |||
# Starte das Programm über {{BSL|git-bash}} {{BML|code= | # Starte das Programm über {{BSL|git-bash}} {{BML|code= | ||
cd [dein Pfad zum Projekt]/ | cd [dein Pfad zum Projekt]/ | ||
}} | }} | ||
Aktuelle Version vom 2. Oktober 2024, 09:45 Uhr
Im Folgenden finden sich Aufgaben für Arrays und deren Sortierung.
Aufgabe: Number Array
Erstelle ein int[] mit der Dimension von Benutzerangabe und befülle mit 1, 2, 3, usw.
Erstelle ein zweites int[] und befülle mit Zahlen entsprechend der Größe ..., 3, 2, 1.
Aufgabe: Kopie
Erstelle eine Funktion, die aus dem Parameter-Array eine Kopie erstellt.
public static int[] makeACopy(int[] original){
}
Aufgabe: Random Number Array
Erstelle ein int[] und befülle es mit Zufallszahlen von 0 bis 100.
Random random = new Random();
...
int randomNumber = random.nextInt([Upper bound]);
- Gib es mit Hilfe einer foreach-Schleife aus.
- Gib es mit Hilfe einer fori-Schleife aus. Das Ziel ist eine identische Ausgabe, wie
Arrays.toString() - Gib den zweiten, fünften und zehnten Wert des Arrays aus. Falls in Input Array die Werte nicht vorhanden sind, schreibe „nicht vorhanden“.
- Gib jeden zweiten Wert des
int[]mit Hilfe einer Schleife aus.
Aufgabe: Random Number Array Crazy Range
Erstelle ein int[] und befülle es mit Zufallszahlen von -50 bis 50 und gib es mit Hilfe einer foreach-Schleife aus.
Aufgabe: Random Number Array Zählen
Erstelle ein int[] und befülle es mit Zufallszahlen von 1 bis 100.
Erstelle eine Funktion, die die Werte größer als 30 zählt.
Aufgabe: Random Number Array Summe
Erstelle ein int[] und befülle es mit Zufallszahlen von 1 bis 100.
Erstelle eine Funktion, die die Summe der Werte zurückgibt.
Aufgabe: Random Number Array Min/Max/Avg
Erstelle ein int[] und befülle es mit Zufallszahlen von 1 bis 100. Erstelle jeweils eine Methode für das Minimum, das Maximum und den Durchschnitt. Die Methoden sollen jeweils den Wert zurückgeben (nicht Ausgeben). In der main Methode Rufe die Methoden mit den Zufallszahlen auf und gib diese aus.
Version 1)
[89, 86, 100, 87, 93, 81, 97, 95, 92, 98]
Max Value found in this Array is = 100
Max Value found at Position 2
Version2)
[94, 99, 83, 86, 96, 92, 92,...]
Max Value found in this Array is = 100
Index position found the highest Number: [17, 37, 43, 44]
- Erstelle zwei weitere Funktionen, die den Index des Minimums und des Maximums zurückgeben.
- Erstelle eine weitere Funktion, die mehrere Index Positionen zurück gibt, wenn der Max oder Min Wert, mehr als einmal vorkommt.
Aufgabe: Bubblesort mit Zahlen
Erstelle ein int[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode.
- Sortiere der Größe nach aufsteigend (Ascending)
- Sortiere der Größe nach absteigend (Descending)
Bonusaufgabe: 15 verschiedene Sortieralgorithmen
Implementiere 3 unterschiedliche Algorithmen deiner Wahl auf folgendem Video:
https://www.youtube.com/watch?v=kPRA0W1kECg
Den Pseudo-Code der Algorithmen findest du unter:
https://panthema.net/2013/sound-of-sorting/SoS-CheatSheet.pdf
Aufgabe: 2D-Array
Erstelle ein Zwei-Dimension-Array int[][] und befülle es mit Zufallszahlen von 0 bis 100.
Nach Eingabe von Anwender gebe zurück die Summe pro Zeile oder pro Spalte.
Aufgabe: Pascal Dreieck
Frage den Anwender nach der gewünschten Größe und erstelle ein Pascal-Dreieck mit der entsprechenden Dimension.
Regel: Jede Zahl in der Matrix ist gleich die Summe der Nachbarzahlen nach Links und nach Oben.
Aufruf:
>>>10
1 1 1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8 9 10
1 3 6 10 15 21 28 36 45 55
1 4 10 20 35 56 84 120 165 220
1 5 15 35 70 126 210 330 495 715
1 6 21 56 126 252 462 792 1287 2002
1 7 28 84 210 462 924 1716 3003 5005
1 8 36 120 330 792 1716 3432 6435 11440
1 9 45 165 495 1287 3003 6435 12870 24310
1 10 55 220 715 2002 5005 11440 24310 48620
Aufgabe: Formular Generieren (Anwendung von Pascal Dreieck)
Wenn wir die Zahlen Diagonal lesen, bekommen wir die Koeffizienten von (a+b)^n
Zum Beispiel:
(a+b)2 = a2 + 2ab + b2
(a+b)3 = a2 + 3a2b + 3ab2 + b3
Frage den Anwender, welche Formular er braucht, und gib die konkrete Formel in der Konsole aus.
Verwende ^ für die Darstellung des Exponenten.
Aufgabe: TicTacToe
Programmiere das Spiel TicTacToe.
Für das Spielfeld, verwende int[3][3] Array, in dem
- 0 = Leer
- 1 = Spieler 1
- 2 = Spieler 2
Das Kriterium für Gewinn ist, 3 Zeichen in eine Reihe, Spalte oder Diagonal.
Bonusaufgabe: 4 in Rows
Das Spiel wird auf einem senkrecht stehenden hohlen Spielbrett gespielt, in das die Spieler abwechselnd ihre Spielsteine fallen lassen. Das Spielbrett besteht aus sieben Spalten (senkrecht) und sechs Reihen (waagerecht). Jeder Spieler besitzt 21 gleichfarbige Spielsteine. Wenn ein Spieler einen Spielstein in eine Spalte fallen lässt, besetzt dieser den untersten freien Platz der Spalte. Gewinner ist der Spieler, der es als erster schafft, vier oder mehr seiner Spielsteine waagerecht, senkrecht oder diagonal in eine Linie zu bringen. Das Spiel endet unentschieden, wenn das Spielbrett komplett gefüllt ist, ohne dass ein Spieler eine Viererlinie gebildet hat.
Aufgabe: Conways Game of life
Im folgenden soll Conways Spiel des Lebens implementiert werden.

- Die Spielregeln finden sich hier.
- Als Ausgangsfeld verwende folgende 2D-Arrays:
public static final int[][] GLEITER = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, };
public static final int[][] SEGLER = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, };
- Ein zufällig generiertes Array
- Verwende nach jedem Durchgang folgenden Code (dieser verlangsamt die Ausgabe)
try { Thread.sleep(1000); } catch(InterruptedException exc) { //noop }
- Rufe vor der Ausgabe auf
public static void clearScreen() { System.out.print("\033[H\033[2J"); System.out.flush(); }
- Starte das Programm über
git-bashcd [dein Pfad zum Projekt]/