Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
matrix transponieren!
sharpy911
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

matrix transponieren!

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
math55
myCSharp.de - Member

Avatar #avatar-2253.png


Dabei seit:
Beiträge: 314
Herkunft: Deutschland

beantworten | zitieren | melden

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;
     }
}
private Nachricht | Beiträge des Benutzers
sharpy911
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

fast, nur die letzte spalte müsste noch eine neue zeile ergeben
private Nachricht | Beiträge des Benutzers
math55
myCSharp.de - Member

Avatar #avatar-2253.png


Dabei seit:
Beiträge: 314
Herkunft: Deutschland

beantworten | zitieren | melden

Heisst?
private Nachricht | Beiträge des Benutzers
sharpy911
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

naja z.b. aus:

5 5 4
2 2 1

wird

5 2 4
5 2 1

anstatt
5 2
5 2
4 1
private Nachricht | Beiträge des Benutzers
Schmitzo
myCSharp.de - Member



Dabei seit:
Beiträge: 82
Herkunft: Köln

beantworten | zitieren | melden

Weil der oben besagte Code nun mal nur für symmetrische Matritzen funktioniert...
private Nachricht | Beiträge des Benutzers
math55
myCSharp.de - Member

Avatar #avatar-2253.png


Dabei seit:
Beiträge: 314
Herkunft: Deutschland

beantworten | zitieren | melden

Das ist korrekt, hätte ich dazu sagen sollen.
private Nachricht | Beiträge des Benutzers
sharpy911
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden


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.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
sharpy911
myCSharp.de - Member



Dabei seit:
Beiträge: 11

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharpy911,
Zitat
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
private Nachricht | Beiträge des Benutzers