Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » (jagged)array-problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.01.2004, 18:48 Uhr
~Sezen
Gast


Hallo!

Habe Probleme mit dreidimensionalem (Jagged) Arrays.


Ich muß folgendes Problem lösen:

Ich muß ein dreidimensionales Array erstellen/füllen mit folgenden Punkten:

ArrTest[NrAnzahl, Teile, PunkteZuDenTeilen);

die ich aus einer Datei einlesen muß.


Zur Laufzeit steht weder die NrAnzahl fest, noch die Teile noch die PunkteZuDenTeilen.

NrAnzahl (1 bis beliebig)
Teile (1 bis beliebig)
PunkteZuDenTeilen (2 bis beliebig)



Der Aufbau einer zu lesenden Datei sieht bspw. so aus:

=========================================================================
Nr Teile PunkteZuDenTeilen
___________________________________________________________

1 2 1 2 3 4 und einmal
1 2 3 4 5 6
___________________________________________________________

2 3 1 2 3 4 und einmal
1 2 sowie
1 2 3 4 5 6 7 8 9
___________________________________________________________

3 1 1 2
___________________________________________________________

===========================================================================

Daraus folgt:
NrAnzahl ist (gemäß Summe aus TeilNr) gleich 3

Teile ist einmal 2 und einmal 5 und einmal 1

PunkteZuDenTeilen sind einmal 8Stück, 12Stück und einmal 2Stück


*************************************************************************

Ich könnte natürlich zu Anfang folgendes ermitteln und festlegen:



Da "Nr" 3 mal vorkommt ist die Anzahl von "Nr" = 3, somit steht im ersten Teil des Arrays ArrTest eine 3 {Arrtest[3,...}

Da Teile = Summe aus 2+5+1 = 8 soll im zweiten Teil des Arrays Arrtest 8 stehen {Arrtest[.,8,.}

Da höchste Anzahl der "PunkteZuDenTeilen" = 9 beträgt soll im dritten Teil des Arrays Arrtest 9 stehen {Arrtest[.,.,9},
so daß das dreidimensionale Array folgendermaßen initialisiert werden müsste:

int [,,,] ArrTest = new int [3,8,9];

*************************************************************************


Das ist aber meiner Meinung nach nicht die idealste Lösung, deswegen dachte ich es wäre besser jagged Arrays zu verwenden und für jede "Nr" eine INDIVIDUELLE ANZAHL von "Teile" und "PunkteZuDenTeilen" je nach Bedarf zuzuweisen.

Doch ich bin an meine Grenzen gestoßen und komme momentan absolut nicht weiter mit meinen for und ifs beim Einlesen der Daten und Abspeichern im Array.


Hat jemand einen Tip für mich, wie ich aus der Sackgasse herauskomme?

Danke schonmal im voraus!
Sezen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.01.2004, 18:50 Uhr
~Sezen
Gast


Hallo! (Korrektur!)

Leider bin ich nicht registiert und kann nicht editieren!

Die Zeile:

PunkteZuDenTeilen sind einmal 8Stück, 12Stück und einmal 2Stück

sollte heißen:

PunkteZuDenTeilen sind einmal 4+6(10)Stück, 4+2+9(15)Stück und einmal 2Stück
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.01.2004, 19:32 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


nimm ein std::vector... der sollte deine Probleme gut lösen und du brauchst dich nicht mit dem dummen allokierei rumärgern...

an sonsten würde ich Teil als klasse oder zumindest als struct definieren das macht die sache dann ein wenig einfacher...

C++:
class Teil{

int anzahl;
std::vector<std::vector<int> >; //mit dem ding kannst du quasi wie mit nem  array arbeiten nur das du dich nicht um die allokiere kümmern musst...wenn du beispiele dazu suchst einfach mal die forumssuche verwenden...

};


von der Klasse teil legst du dann wiederum ein std:vector<Teil> an...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.01.2004, 19:39 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


oder wenn ichs mir recht überlege würde ich das glaube ich so angehen

C++:
typedef struct{std::vector<int> punkt;}Punkteliste;
typedef struct{std::vector<Punkteliste> teil;}Teil;

std::vector<Teil> Teileliste;
.
.
.


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.01.2004, 21:52 Uhr
~Sezen
Gast


Hallo Windalf!

Vorab erstmal Danke für die Antwort (mit der ich allerdings nicht viel anfangen kann, da ich nichts mit c++ zu tun habe! Und auch nicht viel davon verstehe, sorry! )

Ich wüßte jetzt auch nicht, wie ich das alles, was Du geschrieben hast, in CSharp umsetzen könnte.

Hoffe auf weitere Anregungen!

Danke!

Gruß

Sezen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.01.2004, 21:54 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ups sorry hab gar nicht aufs forum geachtet...
CSharp... was frist denn der? Auch alles was c ist? wenn nicht kann ích dir auch leider nicht helfen...kenne c# gar nicht...Tut mir echt leid sollte ich dir falsche hoffnung gemacht haben...
falls der doch auch alles frisst was c/c++ ist kannst du ja nochmal bescheid sagen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.01.2004, 10:53 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

In C# gibbet eine ähnliche Klasse wie std::vector in C++ heißt "ArrayList". Einfach den Namespace System.Collections einbinden, dann steht die zur Verfügung. Ob Du Zahlen, andere ArrayLists oder was auch immer reinschiebst, ist egal - das Teil frißt alles.
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: