hallo,
hab eine matrix vom folgenden typ:
List<double?[]> arrUser = new List<double?[]>();
von dieser matrix möchte ich die transponierte haben, das wollte ich mit folgender schleife machen
for (int i = 0; i < arrUser.Count; i++)
{
for (int j = 0; j < arrUser[0].Length; j++)
{
arrUser2[j][i] = arrUser[i][j];
}
}
arrUser2 gibt mir aber eine out of range exception, da ja die grösse nich festgelegt ist. wie könnte ich bei der deklaration von arrUser2 die richtige grösse festlegen?
Versuchs mal so, ungetestet!
for (int i = 0; i < arrUser.Count; i++) {
for (int j = i + 1; j < arrUser.Count; j++)
{
int tmp = arrUser[i][j];
arrUser[i][j] = arrUser[j][i];
arrUser[j][i] = tmp;
}
}
Weil der oben besagte Code nun mal nur für symmetrische Matritzen funktioniert...
for (int j = 0; j < arrUser[0].Length; j++)
{
user2 = new double?[arrUser.Count];
arrUser2.Add(user2);
}
for (int j = 0; j < arrUser[0].Length; j++)
{
for (int i = 0; i < arrUser.Count; i++)
{
arrUser2[j][i] = arrUser[i][j];
}
}
hab es jetzt so gelöst, kann mir jemand erklären warum die zeile
user2 = new double?[arrUser.Count];
innerhalb der for schleife sein muss, weil wenn diese ausserhalb ist werden nicht die korrekten werte zugewiesen.
Hallo sharpy911,
das ist doch offensichtlich: Weil du für jede Zeile ein eigenes Array brauchst, um die Werte der Zeile aufzunehmen. Wenn das nun nicht gerade ein Fall von "Brett vom Kopf" ist, dann ist es ein Fall von [Hinweis] Wie poste ich richtig? Punkt 1.1.1.
herbivore
hab ich wohl grad n brett vorm kopp
also warum kann ich nicht einfach denselben array öfters adden? die erste for schleife soll ja nur die dimension von arruser2 festlegen, die wertezuweisung erfolgt in der zweiten for schleife
Hallo sharpy911,
also warum kann ich nicht einfach denselben array öfters adden?
eben deshalb.
Bitte schau dir das (mit den Referenztypen) bitte nochmal in einem C# Buch an.
herbivore