matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Hochschulmathe
  Status Uni-Analysis
    Status Reelle Analysis
    Status UKomplx
    Status Uni-Kompl. Analysis
    Status Differentialgl.
    Status Maß/Integrat-Theorie
    Status Funktionalanalysis
    Status Transformationen
    Status UAnaSon
  Status Uni-Lin. Algebra
    Status Abbildungen
    Status ULinAGS
    Status Matrizen
    Status Determinanten
    Status Eigenwerte
    Status Skalarprodukte
    Status Moduln/Vektorraum
    Status Sonstiges
  Status Algebra+Zahlentheo.
    Status Algebra
    Status Zahlentheorie
  Status Diskrete Mathematik
    Status Diskrete Optimierung
    Status Graphentheorie
    Status Operations Research
    Status Relationen
  Status Fachdidaktik
  Status Finanz+Versicherung
    Status Uni-Finanzmathematik
    Status Uni-Versicherungsmat
  Status Logik+Mengenlehre
    Status Logik
    Status Mengenlehre
  Status Numerik
    Status Lin. Gleich.-systeme
    Status Nichtlineare Gleich.
    Status Interpol.+Approx.
    Status Integr.+Differenz.
    Status Eigenwertprobleme
    Status DGL
  Status Uni-Stochastik
    Status Kombinatorik
    Status math. Statistik
    Status Statistik (Anwend.)
    Status stoch. Analysis
    Status stoch. Prozesse
    Status Wahrscheinlichkeitstheorie
  Status Topologie+Geometrie
  Status Uni-Sonstiges

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
StartseiteMatheForenSoftwaretechnik und Programmierungmehrdimensionale felder
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Geschichte • Erdkunde • Sozialwissenschaften • Politik/Wirtschaft
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.unimatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]