Skip to content

Instantly share code, notes, and snippets.

@arselzer
Created December 5, 2016 20:25
Show Gist options
  • Save arselzer/f8a8e93e3dcc2bd90bc04db349b77bb4 to your computer and use it in GitHub Desktop.
Save arselzer/f8a8e93e3dcc2bd90bc04db349b77bb4 to your computer and use it in GitHub Desktop.
class MultiArray {
/*
Aufgabe:
Methoden zur Manipulation eines zwei-dimensionalen Arrays, interpretiert
als Matrix (mit Zeilen und Spalten).
Ergänzen Sie fehlende Teile der Klasse entsprechend den Kommentaren
an den mit TODO gekennzeichneten Stellen.
Sonstige Anforderungen: Die Verwendung der Klasse 'String' oder 'StringBuffer'
ist nicht erlaubt.
Punkte (maximal 18):
9 Punkte für extend,
9 Punkte für setColumn.
Bewertung: für jede Methode jeweils ALLES ODER NICHTS!
nur vollständig korrekt implementierte Methoden erhalten Punkte.
*/
// Gibt das angegebene Array zeilenweise aus.
// Der Zeilenindex erhöht sich von oben nach unten.
// Der Spaltenindex erhöht sich von links nach rechts.
// Vorbedingung: array != null und alle array[i] != null (0 <= i <= array.length)
// DIESE METHODE SOLL NICHT VERÄNDERT WERDEN.
public static void printArray(int[][] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
}
// alle Zeilen, die mehr als n Elemente haben werden
// auf die Länge n gekürzt. Die Werte an den Positionen
// 0 bis n-1 der Zeile bleiben unverändert.
// Beispiel: ein Aufruf mit
// array: {{1,2},
// {3,4,5},
// {6,7,8,9},
// {10,11,12,13,14}}
// n: 3
// veändert das angegebene Array wie folgt:
// array: {{1,2},
// {3,4,5},
// {6,7,8},
// {10,11,12}}
// Vorbedingung: array != null und alle array[i] != null (0 <= i < array.length),
// n >= 0
public static void trim(int[][] array, int n) {
if (array != null && n >= 0) {
for (int i = 0; i < array.length; i++) {
if (array[i] == null) break;
if (array[i].length > n) {
int[] newArray = Arrays.copyOf(array[i], n);
array[i] = newArray;
}
}
}
}
// ersetzt in 'array' die Elemente der Spalte 'columnIndex'
// durch Elemente in 'column'.
// In der ersten Zeile wird das erste Element aus 'column' benutzt,
// in der zweiten Zeile das zweite etc.. Falls eine Zeile kürzer als
// 'columnIndex' ist, wird diese Zeile und das entsprechende Element
// in 'column' ignoriert (siehe Beispiel).
// Gibt es mehr Zeilen als Elemente in 'column' bleiben weitere Zeilen
// unverändert.
// Beispiel: ein Aufruf mit
// array: {{1,2,3,4},
// {5},
// {6,7,8,9},
// {10,11,12,13,14},
// {15,16,17,18}}
// columnIndex: 2
// column: {100,200,300,400}
// veändert das angegebene Array wie folgt:
// array: {{1,2,100,4},
// {5},
// {6,7,300,9},
// {10,11,400,13,14},
// {15,16,17,18}}
// Vorbedingung: array != null und alle array[i] != null (0 <= i < array.length),
// columnIndex >= 0, column != null
public static void setColumn(int[][] array, int columnIndex, int[] column) {
if (array != null && columnIndex >= 0 && column != null) {
for (int i = 0; i < array.length; i++) {
if (array[i] == null) break;
if (i < column.length && columnIndex < array[i].length) {
array[i][columnIndex] = column[i];
}
}
}
}
// Diese Methode können Sie zum Testen nutzen. Geht nicht in die Beurteilung ein.
public static void main(String[] args) {
//ein Array zum Testen
int[][] array = new int[][] {{1,2,3,4},
{5},
{6,7,8,9},
{10,11,12,13,14},
{15,16,17,18}};
int[] column = new int[]{100,200,300,400};
printArray(array);
trim(array, 3);
System.out.println();
printArray(array);
System.out.println();
setColumn(array, 1, column);
printArray(array);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment