Entwickler-Ecke
Basistechnologien - array zu 2D Array
Oski - Sa 14.01.12 08:56
Titel: array zu 2D Array
Hallo alle zusammen,
ich habe mal wieder ein Problem. Habe dieses jetzt gelöst. Aber trotzdem frage ich mich ob es von .NET keine vorgegebene Funktion dafür gibt.
Ich habe einen zweidimensionalen array. Jetzt soll die erste Spalte komplett durch einen array ersetzt werden.
Jedoch gibt es bei:
Ich habe mir jetzt eine Funktion geschrieben die das ersetzten der Spalte übernimmt. Nun bleibt trotzdem die Frage ob es dafür nicht eine Einfachere Möglichkeit gibt.
Bis jetzt habe ich es so gelöst.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| public static double[,] arr_to_2darr(this double[,] arr2d, double[] arr, int pos) { double[,] ergebnis = new double[6, 5]; ergebnis = arr2d;
for (int i = 0; i < 5; i++) { ergebnis[pos, i] = arr[i]; } return ergebnis; }
Array2D = arr_to_2darr(Array2D, Array, 0); |
So kann ich die erste Spalte des 2D-Arrays durch den Array ersetzen. Ich habe gestern mehrfach gesucht jedoch keine Lösung für das Problem gefunden. Vieleicht habe ich auch immer nach dem falschen gesucht. Wenn es dafür keine andere Lösung gibt hoffe ich das diese Lösung auch anderen suchenden hilft.
LG
Oski
jaenicke - Sa 14.01.12 09:01
Eine einfachere Variante wüsste ich nicht. Aber selbst wenn es die geben würde, würde die es ja intern genauso machen müssen. ;-)
Wofür du das 2D-Array allerdings in ein neues kopierst, verstehe ich nicht. Notwendig ist das für die Funktionalität ja nicht. :gruebel: Nur dadurch wird der Quelltext ja so lang, sonst wären es zwei Zeilen.
Oski - Sa 14.01.12 10:04
jaenicke hat folgendes geschrieben : |
Eine einfachere Variante wüsste ich nicht. Aber selbst wenn es die geben würde, würde die es ja intern genauso machen müssen. ;-)
Wofür du das 2D-Array allerdings in ein neues kopierst, verstehe ich nicht. Notwendig ist das für die Funktionalität ja nicht. :gruebel: Nur dadurch wird der Quelltext ja so lang, sonst wären es zwei Zeilen. |
Naja ich schreibe derzeit einen ALGII-Rechner. Die Berechnung des bedars wird als Array zurückgegeben da ich nicht nur den ganzen Bedarf brauche sondern auch die Zusammenstellung aus Regelbedarf + zusätzliche Bedarfserhöhende Sachen.
Damit ich aber nicht für jedes Kind extra eine Ausgabe erzeugen muss, habe ich alle Kinder auch in einen Array zusammengefasst. So kann ich alle Kinder mit einer for-Schleife ausgeben. Da jetzt aber noch die einzelnen Bedarfserhöhenden Sachen mit in diesen Array geschrieben werden müssen erhalte ich ja eine Tabelle, also einen 2DArray.
Nun greife ich den Bedarf mit
C#-Quelltext
1:
| bedarfkind = array_to_2darray(bedarfkind, berechnen(vershiedene Parameter zur Berechnung), ZahlDesKindes); |
ab. Damit kann ich dann weiter arbeiten. Wie hättest du es denn gelöst?
LG
Oski
Th69 - Sa 14.01.12 11:03
Hallo Oski,
zuersteinaml: eines dieser beiden Zuweisungen ist sinnlos:
C#-Quelltext
1: 2: 3:
| double[,] ergebnis = new double[6, 5]; ergebnis = arr2d; |
Entweder ein neues Array anlegen oder aber das Originalarray benutzen (und verändern)!
Ich frage mich jedoch, ob ein 2D-Array hier wirklich die beste Wahl ist. M.E. würde sich eine Struktur (bzw. Klasse) mit Eigenschaften dafür besser anbieten, so daß du also "Regelbedarf" und die "Bedarfserhöhenden Sachen" (was auch immer das ist ;-)) über Namen ansprechen kannst (anstatt über einen Index im Array).
Du hättest dann also einfach eine
List<Bedarf>.
Einzig einmalig müßtest du die Liste iterieren, um die Werte aus dem original Bedarf-Array in das jeweilige Bedarf-Objekt zu kopieren (damit du dann damit bequem weiterarbeiten kannst).
Oski - Sa 14.01.12 11:31
naja ich bin ja noch recht unerfahren mit c#. Deswegen habe ich diesen Weg genommen. Aber ich werde mal sehen ob ich deinen Vorschlag umsetze auch wenn ich noch keine Erfahrung damit habe.
jaenicke - Sa 14.01.12 11:32
Oski hat folgendes geschrieben : |
| Wie hättest du es denn gelöst? |
Um bei deinem Code zu bleiben:
C#-Quelltext
1: 2: 3:
| double[] SecondArray = berechnen(...); for (int i = 0; i < bedarfkind.Length; i++) bedarfkind[i,0] = SecondArray[i]; |
Ich habe aber wie
Th69 überlegt, ob eine geeignete Unterstruktur nicht sinnvoller wäre.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!