DCV 2022 03/Strukturierte Programmierung Uebungen/Arrays: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 26: Zeile 26:
}}
}}
# 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 beim {{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.
# Gib jeden zweiten Wert des {{JSL|int[]}} mit Hilfe einer '''Schleife''' aus aus.
# Gib jeden zweiten Wert des {{JSL|int[]}} mit Hilfe einer '''Schleife''' aus aus.
Zeile 54: Zeile 54:
# Sortiere der Größe nach absteigend (Descending)
# Sortiere der Größe nach absteigend (Descending)


=== '''Bonusaufgabe: 15 Differenz Sort Algorithmen''' ===
=== '''Bonusaufgabe: 15 verschiedene Sortieralgorithmen''' ===
Implementiere 3 unterschiedliche Algorithmen deiner Wahl auf folgendem Video:
Implementiere 3 unterschiedliche Algorithmen deiner Wahl auf folgendem Video:
  https://www.youtube.com/watch?v=kPRA0W1kECg
  https://www.youtube.com/watch?v=kPRA0W1kECg
Zeile 72: Zeile 72:
  Regel: Jede Zahl in der Matrix ist gleich die Summe der Nachbarzahlen nach '''Links''' und nach '''Oben'''.
  Regel: Jede Zahl in der Matrix ist gleich die Summe der Nachbarzahlen nach '''Links''' und nach '''Oben'''.


'''Eingabe''':
'''Aufruf''':
{{BSL|>>>10}}
{{BML|code=


'''Ausgabe''':
>>>10


  1      1      1      1      1      1      1      1      1      1  
  1      1      1      1      1      1      1      1      1      1  
Zeile 87: Zeile 87:
  1      9      45    165    495    1287    3003    6435  12870  24310  
  1      9      45    165    495    1287    3003    6435  12870  24310  
  1      10      55    220    715    2002    5005  11440  24310  48620
  1      10      55    220    715    2002    5005  11440  24310  48620
}}


=== Aufgabe: Formular Generieren (Anwendung von Pascal Dreieck) ===
=== Aufgabe: Formular Generieren (Anwendung von Pascal Dreieck) ===
Wenn wir die Zahlen in Diagonal lesen, bekommen wir die Koeffizienten von {{JSL|(a+b)^n}}
Wenn wir die Zahlen Diagonal lesen, bekommen wir die Koeffizienten von {{JSL|(a+b)^n}}


Zum Beispiel:
Zum Beispiel:
Zeile 97: Zeile 98:
  (a+b)<sup>3</sup> = a<sup>2</sup> + 3a<sup>2</sup>b + 3ab<sup>2</sup> + b<sup>3</sup>
  (a+b)<sup>3</sup> = a<sup>2</sup> + 3a<sup>2</sup>b + 3ab<sup>2</sup> + b<sup>3</sup>


Frage den Anwender, welche Formular er braucht, und druck das konkrete Formular auf die Konsole.
Frage den Anwender, welche Formular er braucht, und gib die konkrete Formel in der Konsole aus.
Verwende das {{JSL|^}} Zeichen für die Darstellung des Exponents
Verwende {{JSL|^}} für die Darstellung des Exponenten.


=== Aufgabe: TicTacToe ===
=== Aufgabe: TicTacToe ===
Zeile 109: Zeile 110:


Das Kriterium für Gewinn ist, 3 Zeichen in eine Reihe, Spalte oder Diagonal.
Das Kriterium für Gewinn ist, 3 Zeichen in eine Reihe, Spalte oder Diagonal.


=== '''Bonusaufgabe: 4 in Rows''' ===
=== '''Bonusaufgabe: 4 in Rows''' ===
Zeile 118: Zeile 118:
der Spieler, der es als erster schafft, '''vier oder mehr seiner Spielsteine waagerecht, senkrecht oder diagonal in eine Linie''' zu bringen.  
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.
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 [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens Conways Spiel des Lebens] implementiert werden.
[[Datei:Animated glider emblem.gif|mini|ohne|Glider<ref>https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens</ref>]]
# Die Spielregeln finden sich [https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens#Die_Spielregeln hier].
# Als Ausgangsfeld verwende folgende 2D-Arrays:
## {{JSL|lukas.week3.day4.ConwaysGameOfLife.GLEITER}}
## {{JSL|lukas.week3.day4.ConwaysGameOfLife.SEGLER}}
## Ein zufällig generiertes Array
# Verwende nach jedem Durchgang folgenden Code (dieser verlangsamt die Ausgabe) {{JML|code=
try {
    Thread.sleep(1000);
} catch(InterruptedException exc) {
    //noop
}
}}
# Rufe vor der Ausgabe {{JSL|lukas.week3.day4.ConwaysGameOfLife.clearScreen();}} auf
# Starte das Programm über {{BSL|git-bash}} {{BML|code=
cd [dein Pfad zum Projekt]/CodingCampus_2022.03.VZ.Dornbirn/build/classes/java/main
java lukas.week3.day4.ConwaysGameOfLife
}}

Aktuelle Version vom 7. April 2022, 11:29 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]);
  1. Gib es mit Hilfe einer foreach-Schleife aus.
  2. Gib es mit Hilfe einer fori-Schleife aus. Das Ziel ist eine identische Ausgabe, wie Arrays.toString()
  3. Gib den zweiten, fünften und zehnten Wert des Arrays aus.
  4. Gib jeden zweiten Wert des int[] mit Hilfe einer Schleife aus 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.

Erstelle zwei weitere Funktionen, die den Index des Minimums und des Maximums zurückgeben.

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.

  1. Sortiere der Größe nach aufsteigend (Ascending)
  2. 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.

Glider[1]
  1. Die Spielregeln finden sich hier.
  2. Als Ausgangsfeld verwende folgende 2D-Arrays:
    1. lukas.week3.day4.ConwaysGameOfLife.GLEITER
    2. lukas.week3.day4.ConwaysGameOfLife.SEGLER
    3. Ein zufällig generiertes Array
  3. Verwende nach jedem Durchgang folgenden Code (dieser verlangsamt die Ausgabe)
    try {
        Thread.sleep(1000);
    } catch(InterruptedException exc) {
        //noop 
    }
    
  4. Rufe vor der Ausgabe lukas.week3.day4.ConwaysGameOfLife.clearScreen(); auf
  5. Starte das Programm über git-bash
    cd [dein Pfad zum Projekt]/CodingCampus_2022.03.VZ.Dornbirn/build/classes/java/main
    java lukas.week3.day4.ConwaysGameOfLife