Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi zusammen
Ich habe mich grade an einer ehemaligen Klausuraufgabe versucht, die ich ziemlich schwierig fand. Ich habe zwar schon eine Lösung, allerdings ist diese ziemlich hässlich und komplex. Außerdem habe ich dafür länger gebraucht als ich in der ganzen klausur zeit haben werde, und ich schreibe auch noch auf papier.
Folgendes Muster soll erzeugt werden:
Code:
B
B C
B C
B B
C B
C B
B
(so bei 7x7, aber unabhängig von der größe)
Die leeren Stellen des Arrays müssen mit einem Leerzeichen gefüllt sein.
Folgender code ist vorgegeben:
Java:
public class Muster {
char[][] feld; public Muster(int n) {
if (n<5) n = 5; if (n%2 == 0) n = n+1; feld = new char[n][n];
}
public void fuelleArrayMitBC() {
//Auf diesen Teil bezieht sich die Aufgabe
}
Und hier ist meine unnötig komplexe Lösung:
Java:
// alle reihen durchgehen
for (int i = 0; i < feld.length; i++) {
// erstmal alles mit leerzeichen
for (int j = 0; j < feld[i].length; j++)
feld[i][j] = ' ';
// obere hälfte
if (i <= feld.length / 2) {
feld[i][feld[i].length / 2 + i] = 'C';
feld[i][feld[i].length / 2 - i] = 'B';
}
// untere hälfte
if (i >= feld.length / 2) {
feld[i][i - feld.length / 2] = 'C';
feld[i][feld.length - 1 - (i - (feld.length / 2))] = 'B';
}
// falsches C überschreiben
feld[feld.length / 2][0] = 'B';
// Ausgabe
for (int f = 0; f < feld.length; f++)
System.out.print(array[i][f] + " ");
System.out.println();
}
Habe fast 2 Stunden gebraucht - in der Klausur hab ich dafür vielleicht 15 Minuten, und kann auch nicht nach jeder Zeile die Ausgabe nachgucken, weil ich ja auf Papier schreibe. Kann mir jemand helfen? :/
Hab 20 minuten gebraucht und mein erster Ansatz war falsch.
Die Aufgabe ist wirklich schwer.
Java:
public void fuelleArrayMitBC()
{
int full = feld.length;
int half = feld.length / 2;
for(int y = 0; y < feld[0].length; y++)
{
for(int x = 0; x < feld.length; x++)
{
char c;
if(x + y == half) c = 'B';
else if (x + y == full + half - 1) c = 'B';
else if (y - x == half) c = 'C';
else if (x - y == half) c = 'C';
else c = ' ';
feld[x][y] = c;
System.out.print(c + " ");
}
System.out.println();
}
}