tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
1800
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ConfusionZero ConfusionZero ist offline Grünschnabel
    Registriert seit
    Apr 2006
    Beiträge
    3
    Hallo Leute,

    ich hab folgendes Problem:
    Ich soll in Java mit Hilfe eines zweidimensionales Arrays eine Raute programmieren, die später auf der Konsole durch Auslesen ausgegeben wird.

    Beispiel: Konsolenausgabe:
    # # # + # # #
    # # + + + # #
    # + + + + + #
    # # + + + # #
    # # # + # # #
    Allerdings soll das mit n-Zahlen >= 3 && ungrade geschehen koennen.

    Ich bin bis hierhin gekommen:
    # # # + # # #
    # # + + + # #
    # + + + + + #
    # # # + # # #
    # # # + # # #
    Hier mein Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    public Legespiel(int n)
        {
            if(n >= 3 && n%2 != 0)
            {
                feld = new boolean[n][n];
                anzahl = n;
                legeRaute();            
            }
            else
            {
                System.out.println("Fehler: Zahl ist nicht groeßer oder gleich 3 bzw ist grade.");
            }
     
    [...........................]
     
                               int a = ((anzahl-1)/2);
            //Senkrechte Linie in der Mitte des Arrays
            for (int i = 0; i < anzahl; i++) 
            {
                if (i <= anzahl / 2) 
                {
                    int leerzeichen = anzahl / 2 - i;
                    int anzahlSterne = 1 + 2 * i;
                    for(int j=leerzeichen; j < leerzeichen + anzahlSterne; j++)
                    {
                        feld[i][j] = true;
                    }
                }
                feld[i][a] = true;
                feld[a][i] = true;
                
            }


    Wäre cool, wenn mir jmd mal auf die Sprünge helfen könnte. Ich bin kein erfahrener Programmierer und meine Mathe/Logik lässt auch noch zu wünschen übrig.

    Liebe Grüße
    und schonmal danke fürs Lesen.

    ConfusionZero
    Geändert von ConfusionZero (27.11.09 um 06:58 Uhr)
     

  2. #2
    Benzbob Benzbob ist offline Mitglied Bronze
    Registriert seit
    Nov 2009
    Beiträge
    27
    Hi, ich habs mal so gelöst.
    Hoffe damit konnte ich dir helfen!

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    
    public class Raute {
     
        public static void main(String[] args) {
     
            int n = 9;
            String[][] raute;
            int pos;
            int anzahl;
     
            if (n < 3 || n % 2 == 0) {
                System.out.println("Ungültige Zahl");
            } else {
                raute = new String[n][n];
                pos = (n - 1) / 2;
                anzahl = 1;
     
                for (int i = 0; i < (raute.length / 2)+1; i++) {
                        int hilfspos = pos;
                        int hilfsanzahl = anzahl;
                        while (hilfsanzahl != 0) {  
                            raute[i][hilfspos] = "+";
                            raute[raute.length - 1 - i][hilfspos] = "+";
                            hilfspos++;
                            hilfsanzahl--;
                        }
                        pos--;
                        anzahl+=2;
                }
     
                for (int i = 0; i < raute.length; i++) {
                    for (int j = 0; j < raute[0].length; j++) {
                        if (raute[i][j] == null) {
                            System.out.print("#");
                        } else {
                            System.out.print(raute[i][j]);
                        }
                    }
                    System.out.println("");
                }
            }
     
        }
     
    }
     

  3. #3
    ConfusionZero ConfusionZero ist offline Grünschnabel
    Registriert seit
    Apr 2006
    Beiträge
    3
    Danke für die schnelle Antwort. Deine Lösung ist echt super und funktioniert auch.
    Allerdings gibt es ein Problem für mich. Das Feld muss boolean sein. Macht das einen Unterschied?

    Ich sollte letztens einen Tannenbaum zur Übung machen(was ich net geschafft hab)
    Mit der Musterlösung davon lässt sich kaum etwas anfangen.

    Ich sitz seit knapp 6 Arbeitsstunden daran und knacks einfach nicht.
    Vielleicht einfach nur Unkenntnis oder einfach mangelhafte Mathe bzw Logik-Vorstellung.

    Aber auf jedenfall ein großes DANKE an dich für die schnelle Antwort.

    GreeTz

    ConfusionZero
     

  4. #4
    Benzbob Benzbob ist offline Mitglied Bronze
    Registriert seit
    Nov 2009
    Beiträge
    27
    Hey,
    also zunächst dazu:
    Das Feld muss boolean sein. Macht das einen Unterschied?
    das macht erstmal keinen wirklichen Unterschied bis auf die Inizialisierung. Die Frage ist nun was genau du willst?! Wenn du genau nochmal schildern würdest was dein Anliegen ist, könnte ich dir vllt auch weiterhelfen!

    Was deinen "Tannenbaum" betirfft ist das, so wie ich das verstehe, ja nur eine halbe Raute!?

    Und von welcher Musterlösung ist hier die Rede?!

    Versuch doch einfach nochmal genau zu schildern was eigentlich dein Problem ist! Dann versuche ich dir möglichst genau zu helfen
     

  5. #5
    hisoka Tutorials.de Gastzugang
    Ich danke dir auch für die hilfe, hab das in mein programm gepackt und das ganze auf booleans abgeändert und es funktioniert echt gut.
    Ein dickes dankeschön von mir
     

  6. #6
    Gocca Tutorials.de Gastzugang
    Die Aufgabenstellung ist folgende:
    Programmieren Sie die Klassen Legespiel und LegespielTest
    1 Die Java-Klasse Legespiel muss folgende Eigenschaften besitzen:
    /11/ Der Konstruktor Legespiel (int n)erzeugt ein zweidimensionales Feld vom
    Typ boolean der Größe nxn
    /12/ Die Methode legeRaute()setzt einzelne Feldkomponenten auf den Wert true,
    so dass alle auf true gesetzten Komponenten zusammen das Muster einer
    Raute ergeben. Die Raute soll jeweils in der Mitte der Feldseiten mit ihrer Spitze
    die Feldseite berühren. (siehe Bild)
    /13/ Die Methode toString() erzeugt einen String aus dem Feld. Sie startet mit
    dem leeren String und hängt für jede Feldkomponente ein Zeichen daran:
    Wenn die Feldkomponente den Wert
    - false hat, dann wird ein Leerzeichen angehängt
    - true hat, dann wird ein '*'-Zeichen angehängt.
    Nach jeder Zeile des Feldes, soll auch im String ein Zeilenvorschub angehängt
    werden (Hinweis: '\n' erzeugt einen Zeilenvorschub).
    2 Die Java-Klasse LegespielTest muss folgende Eigenschaften besitzen:
    /21/ Die main-Methode liest eine ganze Zahl von der Konsole ein, die größer gleich 3
    und ungerade sein muss. Sie sorgt anschließend dafür, dass ein Feld in der geforderten
    Größe erzeugt wird, veranlasst das Legespiel dazu die Raute zu legen
    und gibt das Ergebnis mittels toString() auf der Konsole aus.
     

  7. #7
    ConfusionZero ConfusionZero ist offline Grünschnabel
    Registriert seit
    Apr 2006
    Beiträge
    3
    Hallohooo das Thema ist geschlossen. Des heißt, dass das Problem gelöst worden ist........

    GreeTz ConfusionZero
     

  8. #8
    Gocca Tutorials.de Gastzugang
    Kannste die Lösung bitte posten, komm einfach nicht drauf
     

  9. #9
    Avatar von Vereth
    Vereth Vereth ist offline Mitglied Brokat
    Registriert seit
    Nov 2009
    Ort
    Dortmund
    Beiträge
    372
    Hier ist die Lösung für deine Aufgabe 1, Aufgabe 2 solltest du selber lösen können.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    
    class Raute
    {
      private int groesse;
      private boolean feld[][];
      // bei Konstruktoren wird nie ein Rückgabewert definiert
      Raute(int n)
      {
        groesse = n;
        feld = new boolean[n][n];
        int row,col;
        // die Initialisierungsschleife ist normalerweise
        // nicht notwendig, da boolean's mit false initialisiert sind
        for ( row = 0; row < n; row++ )
        for ( col = 0; col < n; col++ )
        { feld[row][col] = false; }
      }
      // Die Raute wird in das feld geschrieben
      public legeRaute()
      {
        int n = groesse;
        int last  = n-1; // index der letzten Zeile
        int mitte = n/2; // index der Mitte
        int min, max; // linker und rechter Rand fuer die Rautenzeile 
        int row, col; // Schleifenzaehler fuer Zeile und Spalte
     
        // Die Schleife fue die haelfte der Zeilen
        min = max = mitte;
        for ( row = 0; row < mitte; row++, cnt++, min--, max++ )
        {
          // rautenelemente auf true setzen
          for ( col = min; col <= max; col++ )
          {
            feld[     row][col] = true; // von oben her fuellen
            feld[last-row][col] = true; // von unten her fuellen
          }
        }
        // die mittlere Zeile wird komplett gefuellt
        for ( col = 0; col < n; col++ )
        { feld[mitte][col] = true; }
      }
      // das feld als String ausgeben
      string toString()
      {
        int row,col;
        string str = "";
        for ( row = 0; row < groesse; row++ )
        {
          for ( col = 0; col < groesse; col++ )
          { str += feld[row][col] ? "*" : " "; }
          str += "\n";
        }
      }
    }

    PS: Ich habe nur einen normalen Text-Editor verwendet, aber der Code müsste eigentlich trotzdem fehlerfrei sein *hoff*
    Geändert von Vereth (28.11.09 um 20:42 Uhr)
     

  10. #10
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.329
    @Gocca
    Hier im Forum wird Wert auf Eigeninitiative gelegt. Wenn nur Aufgabe geposten wird ohne einen Lösungsansatz, wird normal nicht drauf geantwortet.

    Es hat schon seine Gründe warum ihr die Aufgaben von eurem Prof. gestellt bekommt.

    Was ich hier allerdings richtig dreist finde ist, dass du dir nichtmal die Mühe machst, das Thema durchzulesen, da die Frage schon beantwortet.
    http://www.tutorials.de/forum/java/2...ngszettel.html


    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

Ähnliche Themen

  1. c# zweidimensionales array
    Von xlon im Forum .NET Windows Forms
    Antworten: 12
    Letzter Beitrag: 26.02.10, 08:21
  2. [perl] Vorhandes Array [Name;Vorname/n] in zweidimensionales Array splitten
    Von FlockY im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 3
    Letzter Beitrag: 31.08.09, 18:53
  3. Antworten: 3
    Letzter Beitrag: 27.05.09, 18:21
  4. Zweidimensionales Array von VB
    Von si031006 im Forum PHP
    Antworten: 10
    Letzter Beitrag: 22.12.06, 11:19
  5. Antworten: 1
    Letzter Beitrag: 29.09.04, 16:47