www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Softwaretechnik und Programmierung" - mehrdimensionale felder
mehrdimensionale felder < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

mehrdimensionale felder: Idee und erklärung
Status: (Frage) beantwortet Status 
Datum: 20:36 Fr 05.11.2010
Autor: BlackSalad

Hallo,

also ich ahb jetzt mehrere Tutorials und auch in 2 Büchern über arrays gelesen und ich möchte jetzt zb ein 1d arry in ein 2d array umwandeln. Also das 1 d array ist gegeben und das 2 d array auch.

int[] d1 = {1, 2, 3};

int[][] d2 = {{1, 2 }, {3}, {4, 5}}; d2[1] = null;


Ich bin wirklich neu auf dem Gebiet und will es unbedingt verstehen.

was ich jetzt schon nicht ganz versteh ist das 2 dimensionale array das gegeben ist.  was haben die werte in klammern zu sagen. also mir ist klar, dass das die zahlen sind die dem array zugewiesen werden, aber  wäre int [][] 2d auch ein 2d array, wenn  das "d2 [1] = 0 " nicht vorhanden wäre?

wie tu ich denn jetzt das ein diemensionale feld in ein 2 dimensionale feld umwandeln ?

Mir wäre es lieb, wenn ihr das dann ausführlich erklärt, weil ich echt ned so viel Ahnung hab. Ich versuche in meiner Vorlesung mit zu kommen, was mir schwer fällt, und die nächste vorlesung ist am Montag und bis dahin müsst ich das verstanden haben um weiter mitdenken zu können.


Liebe Grüße und vielen, vielen Dnak im Voraus für jede antwort!




        
Bezug
mehrdimensionale felder: Antwort
Status: (Antwort) fertig Status 
Datum: 12:06 Sa 06.11.2010
Autor: Event_Horizon

Hallo!

Welche Sprache soll das denn sein? C? Java?
Ich geh mal von C aus, Java ist ja nicht viel anders.

Speicher ist eindimensional, deshalb stehen alle Werte eines Arrays im Speicher direkt hintereinander.

Ein 2D-Array wie int b[3][4] besteht aus 12 Werten, die im Speicher ab der Adresse b hintereinander liegen. Logisch stehen die vier Werte von b[0][0] bis b[0][3], dann b[1][0] bis b[1][3] und schließlich b[2][0] bis b[2][3] direkt hintereinander.

Wenn du später sowas wie b[1][2] schreibst, weiß der Computer:
n=1*<Größe der 2. Dimension>+2
und weiß dann, daß du mit dem Wert, der im Speicher an n-ter Stelle steht, arbeiten willst.

Jetzt kannst du Arrays aber auch erstellen, indem du sie direkt initialisierst, also Zahlen rein schreibst, aber keine Größe angibst. Das hast du da mit den geschweiften Klammern getan. Der Computer weiß dann automatisch, wie groß das Array sein muß. Bei den geschachtelten Klammern weiß er, daß die zweite Dimension die Größe 2 hat, weil in den inneren Klammern 2 Zahlen drin stehen, und die erste Dimension  hat die Größe 3, weil 3 innere Klammern vor kommen.

Du kannst schreiben:

int b[2][3]={{1,2,3}, {4,5,6}, {7,8,9}}
int b[2][3]={1,2,3,4,5,6,7,8,9}

In beiden Fällen stehen die Zahlen 1-9 hintereinander im Speicher, und der Computer weiß, daß er die Zahlen als (2D-)Tabelle

123
456
789

auffassen soll. Der einzige Unterschied: im ersten Fall kannst du die Größenangaben weg lassen.

Jetzt  hast du da
int[][] d2 = {{1, 2 }, {3}, {4, 5}}

stehen. In der zweiten inneren Klammer fehlt was. Der Computer versteht das automatisch als
int[][] d2 = {{1, 2 }, {3, 0}, {4, 5}}




Was ich nun nicht verstehe, ist das d2[1] = null .  Das d2[1] ist ein Pointer, der angibt, ab wo das zweite "Subarray" {3,0} im Speicher beginnt. Allerdings ist das kein richtiger Pointer, sondern das ist ne Rechnung: Der Pointer zum Gesamtarray ist d2 , und ab da ist die übernächste Speicherstelle gemeint.

Ich könnte mir vorstellen, daß Java so schlau ist, das automatisch als d2[1][0]=0 zu interpretieren, damit würde dann die 3 im Array durch ne 0 ersetzt.




Was nun deine Aufgabe mit dem Kopieren angeht: Du hast da bereits zwei gefüllte Arrays. Was willst du denn da wo hin kopieren?






Bezug
                
Bezug
mehrdimensionale felder: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 15:06 Sa 06.11.2010
Autor: BlackSalad

Hallo,

Vielen Dank für die ausführliche Antwort. Mir im speziellen geht es eigentlich um Java nicht um C.

Ich hab aber noch ein paar Fragen dazu. (sorry bin etwas schwer von begriff :(  )



Wie komme ich auf diese Werte "Logisch stehen die vier Werte von b[0][0] bis b[0][3], dann b[1][0] bis b[1][3] und schließlich b[2][0] bis b[2][3] direkt hintereinander." ?


"[i]Was ich nun nicht verstehe, ist das d2[1] = null .  Das d2[1] ist ein Pointer, der angibt, ab wo das zweite "Subarray" {3,0} im Speicher beginnt. Allerdings ist das kein richtiger Pointer, sondern das ist ne Rechnung: Der Pointer zum Gesamtarray ist d2 , und ab da ist die übernächste Speicherstelle gemeint.[i]

also ich weiß nicht, das steht so in der aufgabe. Kann es nicht sein, dass das Subarray einfach ganz vorne/oben anfangen soll?  

"Ich könnte mir vorstellen, daß Java so schlau ist, das automatisch als d2[1][0]=0 zu interpretieren, damit würde dann die 3 im Array durch ne 0 ersetzt. "

das versteh ich jetzt gar nicht. wozu sollte das sein?




Ich blick bei der Thematik nicht durch. mir ist auch unkar, was bei dem konvertieren von 1d zu 2d oder auch von 3d zu 1d passieren soll.

:(

Bezug
                        
Bezug
mehrdimensionale felder: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:22 Mo 08.11.2010
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Softwaretechnik und Programmierung"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]