tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
218
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Pezi Pezi ist offline Rookie
    Registriert seit
    Sep 2011
    Beiträge
    9
    Hallo Community

    ich benötige ganz dringend für ein Projekt eine Rekursion. Ich hoffe Ihr könnt mir weiter helfen!
    Zum Problem:
    Ich habe ein Array, in dem ich Zellen speichere, die einmal in einem square ihre reihe und spalte haben. Desweiteren haben die squares auch wieder eine bestimmte reihe und spalte, welche die Zellen aber auch als information bekommen sollen. Somit weis jede Zelle zu welchem Square sie gehört, und in diesem, an welcher position sie sich befindet.

    Ich habe inmal schon versucht, aber folgender code funktioniert nicht wie ich es will.
    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
    
        var column=0;
        var row=0;
        var riddleSquareColumn=0;
        var riddleSquareRow=0;
        var squareVertical=3;
        var squareHorizontal=3;
        var cellVertical=10;
        var cellHorizontal = 10;
     
        for(var i=0;i<riddleArray.length;i++)
        {
            for(var m=0;m<squareVertical;m++)
            {
                for(var l=0;l<squareHorizontal;l++)
                {
                    for(var j=0; j<cellVertical; j++)
                    {
                        for(var k=0;k<cellHorizontal;k++)
                        {
                            riddleArray[i] = new Cell(column, row, riddleSquareColumn, riddleSquareRow);
                            row++;
                        }
                        row=0;
                        column++;
                    }
                    riddleSquareColumn++;
                    column=0;
                } 
                riddleSquareRow++;
            }
        }

    weiterhin eine grafik, die evtl das problem besser verdeutlicht.

    vielen dank schon jetzt für eure Hilfe
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Rekursiver Algorithmus benötigt-grid-position.jpg  
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    und was willst du jetz mit einer Rekursion ersetzen? Was soll das Ziel sein?

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    Pezi Pezi ist offline Rookie
    Registriert seit
    Sep 2011
    Beiträge
    9
    Hey,

    also das Ziel ist, dass die Zellen die ich erstellen will wissen, in welchem Square sie sich befinden (squareRow und squareColumn) und dann auch noch in welcher reihe und spalte in dem square.
    Da es ein großes array werden soll, wär es sehr umständlich, das per hand zu schreiben.

    hier mal ein beispiel:
    array[0] = squareRow=0; squareColumn=0; row=0; column=0;
    array[56] = squareRow=0; squareColumn=2; row=1; column=1;
    array[113] = squareRow=1; squareColumn=1; row=2; column=3;
    array[223] = squareRow=2; squareColumn=2; row=4; column=3;

    sozusagen wird ein square mit 25 zellen befüllt, dann kommt das nächste.

    ist das verständlich?

    gruß
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    also für eine rekursive Lösung kann ich einen Ansatz finden, nur eine vereinfachte Form durch das Auslagern in Methoden:

    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
    
    /**
     * Füllt einen Square in dem Feld.
     * 
     * @param base  Der erste Wert in dem Feld (z.B.: 0, 25, 50, 75...)
     * @param arr   Das Array in dem das Feld gespeichert werden soll
     * @param sqCol Die x-Position des Squares, welches gefüllt wird
     * @param sqRow Die y-Position des Squares
    */
    private void fillSquare(Cell[] arr, int base, int sqCol, int sqRow) {
      /* 25 Felder erstellen */
      for(int i=0; i<25; i++) {
        arr[base + i] = new Cell(
            i%5,      /* die Spalte des Feldes in dem Square */
            i/5,      /* die Zeile des Feldes in dem Square */
            sqCol,    /* die Spalte des Squares im Bezug auf das Feld */
            sqRow     /* die Zeile des Squares im Bezug auf das Feld */
        );
      }
    }
     
    /**
     * Erstellt das komplette Feld, bestehend aus 3x3 Squares die jeweils
     * 5x5 Felder groß sind.
    */
    private Cell[] createAll() {
      /* Das Feld */
      Cell[] riddleArray = new Cell[225];
      
      /* 3x3 Squares erstellen */
      for(int i=0; i<9; i++) {
        fillSquare(
            riddleArray,  /* das feld */
            i*25,         /* der index der erstenn zelle in dem square (0, 25, 50...) */
            i%3,          /* die spalte in dem square */
            i/3           /* die zeile in dem square */
        );
      }
      
      return riddleArray;
    }

    Angabe ohne Gewähr, nicht getestet...

    Bitte halte dich an die Netiquette, vorallem Punkt 15.


    Edit: Uups, da hab ich mich wohl verlesen, dachte es geht um Java... Hmm, ich lass den Codeschnipsel mal so stehen, vielleicht hilft er dir ja als Denkanstoß

    Gruß
    BK
    Geändert von Bratkartoffel (26.09.11 um 10:29 Uhr)
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  5. #5
    Pezi Pezi ist offline Rookie
    Registriert seit
    Sep 2011
    Beiträge
    9
    Vielen Dank erst mal für die Antwort Bratkartoffel, ich weis nur nicht genau, ob man das so in JS umsetzen kann. Ich bin jetzt nicht so der JS-Coder aber werde es auf jedenfall probieren.
    Für eventuelle weitere Hilfe wär ich trotzdem dankbar.

    Gruß
     

Ähnliche Themen

  1. SCHEME Rekursiver aufruf.
    Von Mikrowelle im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 10.01.11, 08:44
  2. Probleme mit rekursiver Funktion
    Von xtramen01 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.12.09, 16:25
  3. Rechte bei rekursiver Dateisuche
    Von max26 im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 19.08.09, 09:36
  4. [c++] Problem mit rekursiver Ausgabe
    Von Vektor im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 20.03.06, 14:27
  5. rekursiver funktionsaufruf
    Von südpol im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.01.05, 13:29