3 Stimmen

Kopieren eines gezackten Arrays über ein anderes

Wie könnte ich es schaffen, ein gezacktes Feld in ein anderes zu kopieren? Zum Beispiel habe ich ein 5x7 Array von:

0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0

und ein 4x3-Array von:

0,1,1,0
1,1,1,1
0,1,1,0

Ich möchte in der Lage sein, einen bestimmten Startpunkt wie (1,1) auf meine alle Null-Array angeben, und kopieren Sie meine zweite Array oben auf es, so dass ich ein Ergebnis wie haben würde:

0, 0, 0, 0, 0, 0, 0
0, 0, 1, 1, 0, 0, 0
0, 1, 1, 1, 1, 0, 0
0, 0, 1, 1, 0, 0, 0
0, 0, 0, 0, 0, 0, 0

Wie lässt sich dies am besten bewerkstelligen?

2 Stimmen

Sind Ihre Arrays immer rechteckig? Wenn ja, warum verwenden Sie dann nicht ein rechteckiges Array anstelle eines gezackten Arrays?

0 Stimmen

Eine Beobachtung - die Beispielfelder sind beide rechteckig.

2voto

Anthony Pegram Punkte 119149

Aufgrund des quadratischen Charakters deines Beispiels scheint dies eher zu einem 2D-Array zu passen als zu einem gezackten. Aber so oder so, könnte man sicherlich tun es die altmodische Weise und Schleife über sie. Etwas wie (ungetestet)

for (int i = 0; i < secondArray.Length; i++)
{
    for (int j = 0; j < secondArray[0].Length; j++)
    {
        firstArray[startingRow + i][startingColumn + j] = secondArray[i][j];
    }
}

Bearbeiten: Wie Mark hatte auch ich eine leichte Verbesserung, etwas anders, aber in dieselbe Richtung.

for (int i = 0; i < secondArray.Length; i++)
{
    secondArray[i].CopyTo(firstArray[startingRow + i], startingColumn);
}

2voto

Mark Byers Punkte 761508

Dies sollte auch funktionieren, wenn Ihre Eingänge nicht rechteckig sind:

void copy(int[][] source, int[][] destination, int startRow, int startCol)
{
    for (int i = 0; i < source.Length; ++i)
    {
        int[] row = source[i];
        Array.Copy(row, 0, destination[i + startRow], startCol, row.Length);
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X