Mehrdimensionale Array zusammenfassen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DocBob
Beiträge: 3
Registriert: Mi 28. Nov 2012, 14:31

Mehrdimensionale Array zusammenfassen

Beitrag von DocBob »

Tach ihr,
ich bräuchte mal Hilfe bei Folgendem Problem:
Ich habe eine Array aus Array, also Steht an jeder Stelle des Mutterarray wieder ein Array. Wie kann ich auch diesem Array aus Array ein einziges großes Array machen ?
Hat da wer n Code-Snippet für mich ?
Wenn ich zum Beispiel Ein Array, dass an Stelle 1 Das Array 3, 4,5 und an Stelle 2 Das Array 6,7,8 habe, möchte ich am Ende das Array 3,4,5,6,7,8 haben


Lg DocBob

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Mehrdimensionale Array zusammenfassen

Beitrag von theo »

Kopiere die Werte einfach in ein neues, eindimensionales Array.

DocBob
Beiträge: 3
Registriert: Mi 28. Nov 2012, 14:31

Re: Mehrdimensionale Array zusammenfassen

Beitrag von DocBob »

Klar, aber wie genau finde ich da eine universelle Lösung für ? Ich möchte das ja für ein n-Stelliges Mutterarray haben, dass unterschiedlich lange unterarrays hat.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Mehrdimensionale Array zusammenfassen

Beitrag von mschnell »

Ein Array kann nur gleiche Elemente (also "gleichlange" Arrays haben.

Oder sind das dynamische Arrays ?

-Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2813
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Mehrdimensionale Array zusammenfassen

Beitrag von m.fuchs »

Also als Ausgang beispielsweise folgendes

Code: Alles auswählen

 
[b][color=#FF0000]1 2 3 4 5[/color][/b] 
1 4 6 7 10
2 5   8 11
3     9 12
        13
und rauskommen soll

Code: Alles auswählen

1 2 3 4 5 6 7 8 9 10 11 12 13
Das ist doch eigentlich recht einfach. Du brauchst zwei for-Schleifen. In der ersten gehst du jedes Element des Mutter-Arrays durch, liest die Länge des Kind-Arrays aus und verlängerst dein Ausgabe-Array um diese Anzahl. Dann startet die zweite (innere) for-Schleife. Sie läuft das Kind-Array durch und kopiert jedes Element in das Ausgabe-Array. Dazu nicht vergessen einen Zähler für das Ausgabe-Array mitzuführen, der nach jedem Kopiervorgang inkrementiert wird.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

DocBob
Beiträge: 3
Registriert: Mi 28. Nov 2012, 14:31

Re: Mehrdimensionale Array zusammenfassen

Beitrag von DocBob »

m.fuchs hat geschrieben:Also als Ausgang beispielsweise folgendes

Code: Alles auswählen

 
[b][color=#FF0000]1 2 3 4 5[/color][/b] 
1 4 6 7 10
2 5   8 11
3     9 12
        13
und rauskommen soll

Code: Alles auswählen

1 2 3 4 5 6 7 8 9 10 11 12 13
Das ist doch eigentlich recht einfach. Du brauchst zwei for-Schleifen. In der ersten gehst du jedes Element des Mutter-Arrays durch, liest die Länge des Kind-Arrays aus und verlängerst dein Ausgabe-Array um diese Anzahl. Dann startet die zweite (innere) for-Schleife. Sie läuft das Kind-Array durch und kopiert jedes Element in das Ausgabe-Array. Dazu nicht vergessen einen Zähler für das Ausgabe-Array mitzuführen, der nach jedem Kopiervorgang inkrementiert wird.
und genau da liegt der Kasus Knaxus. Ich weiß nicht wie ich das mitschleife... Habt ihr eventuell n Codebeispiel? Ich bekomms selbst nicht hin. Die Idee wie du hatte ich auch schon, es nur eben selbstnicht hinbekommen

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Mehrdimensionale Array zusammenfassen

Beitrag von theo »

DocBob hat geschrieben: und genau da liegt der Kasus Knaxus. Ich weiß nicht wie ich das mitschleife... Habt ihr eventuell n Codebeispiel? Ich bekomms selbst nicht hin. Die Idee wie du hatte ich auch schon, es nur eben selbstnicht hinbekommen
Was hast du denn schon versucht? Poste mal den Code.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2813
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Mehrdimensionale Array zusammenfassen

Beitrag von m.fuchs »

Vielleicht hilft dir das hier weiter:

Code: Alles auswählen

program Project1;
{$mode objfpc}{$H+}
 
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}CThreads,{$ENDIF}{$ENDIF}Classes;
 
const
  Child0: array[0..2] of Byte = (1, 2, 3);
  Child1: array[0..1] of Byte = (4, 5);
  Child2: array[0..0] of Byte = (6);
  Child3: array[0..2] of Byte = (7, 8, 9);
  Child4: array[0..3] of Byte = (10, 11, 12, 13);
 
var
  Eingabe: Array of Array of Byte;
  Ausgabe: Array of Byte;
  x, y, i: Integer;
  b: Byte;
 
begin
  i := 0;
  SetLength(Eingabe, 5);
  Eingabe[0] := Child0;
  Eingabe[1] := Child1;
  Eingabe[2] := Child2;
  Eingabe[3] := Child3;
  Eingabe[4] := Child4;
  for x := 0 to (Length(Eingabe) - 1) do begin
    SetLength(Ausgabe, Length(Ausgabe) + Length(Eingabe[x]));
    for y := 0 to (Length(Eingabe[x]) - 1) do begin
      Ausgabe[i] := Eingabe[x, y];
      Inc(i);
    end;
  end;
  for b in Ausgabe do Write(b, ' ');
  ReadLn;
end. 
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten