Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

1

05.09.2010, 19:49

[C++]Bei einem mehrdimensionalen Array auf eine Dimension zugreifen

Hallo zusammen,

ich bins mal wieder. Diesmal hab ich folgende Frage:

Wenn ich ein mehrdimensionales Array bei C++ erstelle also int Allerwelt[20][5][300] wie kann ich dann nur auf die 2te dimension zugreifen.

C-/C++-Quelltext

1
2
int Allerwelt[20][5][300] 
int Allerwelt[20][ZUgriffaufdie2teDimension][300]


und was muss ich machen um später nur auf die zweite dimension zuzugreifen, wenn ich nur diese dimension brauche?


LuGo

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

05.09.2010, 19:56

und was muss ich machen um später nur auf die zweite dimension zuzugreifen, wenn ich nur diese dimension brauche?


Was genau meinst du mit "nur auf die zweite Dimension"? In etwa so?

C-/C++-Quelltext

1
2
int i = 4;
Allerwelt[0][i][2] = 42;
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

05.09.2010, 19:57

Was genau soll "auf die zweite Dimension zugreifen" bedeuten? Meinst du welcher Index der für die zweite Dimension ist?. Nun gerade bei nem 3D Array is das doch, egal wie herum, garantiert der mittlere!? ;)

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

4

05.09.2010, 20:08

Ne ich wollte mal so als Übung ein kleines Alarmierungprogramm für eine Berufsfeuerwehr programmieren und hatte dann vor z.B. in der ersten Dimension für wen die Alarmierung ist (also 0= Feuerwehr, 1 = Rettungsdienst, 2 = Für alle) und in der zweiten Dimension dann Art des Einsatzes (also 0 = Wohnungsbrand, Menschenleben in Gefahr 1 = Auslösung Brandmeldeanlage, 2 = Kleinbrand, 3 = Großbrand, 4 = Sportverletzte, 5= Schlaganfall/Herzinfarkt...) und die dritte für die Fahrzeuge (Also 0 = Rettungstransportwagen, 1 = Löschfahrzeug, 2 = Kommandowagen, 3 = Drehleiter, 4 = Notarteinsatzfahrzeug).

Und wenn ich mir dazu switch case Abfrage basteln wollte, muss ja irgendwo das auch unterteilt werden, außer man bastelt Abfragen Einsatz[0][0][0].... Einsatz [0][1][0] etc.

Ich hoffe jetzt ist es etwas klarer geworden, was ich meinte...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

05.09.2010, 20:12

Bist du dir sicher dass das so eine gute Idee ist sowas in ein Array zu packen?
Warum einen Einsatz nicht als Objekt repräsentieren?

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

6

05.09.2010, 20:15

Letzten Endes ja, war mir nur so spontan eingefallen, um meine Kenntnisse zu vertiefen und ich dachte mir, wenn du sowas jetzt nciht brauchst vielleicht später. außerdem war es eine nette programmieraufgabe...

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

7

06.09.2010, 17:33

Also entweder hab ich hier einen denkfehler, oder du... du repräsentierst so einen einsatz doch durch 3 integer, warum dafür ein 3 dimensionales array? da würde doch auch ein eindimensionales mit 3 einträgen reichen? Möglicherweise liegt hier auch die Antwort auf deine Frage, denn eigentlich gibt es keine "zweite" Dimension in dem array. Oder versteh ich hier was falsch?

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

8

06.09.2010, 18:14

Kann es sein, dass du nicht ganz verstanden hast, wie mehrdimensionale Arrays aufgebaut sind: Man kann nicht einfach auf eine Dimension zugreifen, sondern nur auf ein Element.

Vielleicht hilft das weiter (. entspricht einem Element):
int aiArray1[5] ist aufgebaut wie eine Liste, es hat 5 Elemente.

Index
-------
0 .
1 .
2 .
3 .
4 .

int aiArray2[5][5] ist aufgebaut wie ein Schachbrett, es hat 5*5 = 25 Elemente.

- 0 1 2 3 4
0 . . . . .
1 . . . . .
2 . . . . .
3 . . . . .
4 . . . . .

int aiArray3[5][5][5] ist aufgebaut wie ein Würfel, es hat 5*5*5 = 125 Elemente.

Ich glaube, du stellst dir mehrdimensionale Arrays wie Tabellen mit mehreren Spalten vor, was sie aber nicht sind.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

9

06.09.2010, 19:01

ein 3d array ist quasi ne ansammlung von tabellen. array[nummer der tabelle][spalte][zeile]
ich stells mir immer so vor als hätte ich einen stapel papier auf denen tabellen gedruckt sind.
wenn mir dann jemand sagt "was steht in zeile 3, 2. spalte auf der 5. tabelle" weiß ich genau was gemeint ist ;)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

10

06.09.2010, 19:18

Wie auch immer man sich das ein mehrdimensionales Array vorstellen mag, es wird hier nicht wirklich gebraucht. Außerdem stimme ich auch dot vollkommen zu, dass sich sowas doch perfekt für eine neue Klasse eignet.

Es könnte z.B. ja auch der Fall sein, dass verschiedene Fahrzeuge gebraucht werden, dann müsstest du wieder eine Dimension im Array hinzufügen um die Anzahl zu speichern. Nach und nach wird das immer unübersichtlicher.

Im Fall des neuen Objekts hast du einfach 3 variablen, z.B. int fuerWen, int artDesEinsatz, int fahrzeugtyp. Falls es verschiedene Fahrzeuge sein sollen, mit Anzahl machst du dafür ein neues Objekt, z.B. Fahrzeugkolonne, was dann als membervariablen die anzahl der einzelnen Fahrzeugtypen hat.

An deiner Stelle würde ich so früh wie möglich anfangen objektorientiert zu programmieren, es hat wirklich viele Vorteile.
Meine erste Programmiersprache damals war PHP, und da hab ich lange zeit nicht OO programmiert. Die Umgewöhnung war schwierig für mich, vor allem, weil ich so lange programmiert habe, und es ging ja auch ohne OO...

Werbeanzeige