000
19.03.2018, 20:26 Uhr
Bizepsbenny
|
Hallo zusammen,
ich habe eine Aufgabe, bei der zwei sortierte arrays mit unterschiedlicher Größe zu einem array verschmelzen sollen. Ich habe für den Verschmelzungsprozess eine for-Schleife benutzt, danach will ich mithilfe einer while-Schleife die Elemente des noch nicht abgearbeiteten Feldes einfügen. Klappt aber nicht so, wie ich mir das vorstelle
Hat jemand eine Idee?
Danke im voraus.
Gruß BB
Code: |
program merge (input, output); { liest ohne Eingabeueberpruefung zwei sortierte Felder mit integer-Zahlen ein; beide Felder werden in einem weiteren Feld sortiert zusammengefuegt; das Ergebnis wird ausgegeben; ist die Eingabe unsortiert, so ist das Ergebnisfeld undefiniert } const FELDLAENGE1 = 5; FELDLAENGE2 = 8; ERGEBNISFELDLAENGE = 13; { FELDLAENGE1 + FELDLAENGE2 } type tFeld1 = array [1..FELDLAENGE1] of integer; tFeld2 = array [1..FELDLAENGE2] of integer; tErgebnisFeld = array [1..ERGEBNISFELDLAENGE] of integer;
var Feld1 : tFeld1; Feld2 : tFeld2; ErgebnisFeld : tErgebnisFeld; i : integer; j : integer; k : integer; begin { sortierte Felder einlesen } writeln ('Bitte', FELDLAENGE1:2, ' Werte des ersten Feldes ', 'sortiert eingeben!'); for i := 1 to FELDLAENGE1 do readln (Feld1[i]); writeln ('Bitte', FELDLAENGE2:2, ' Werte des zweiten Feldes ', 'sortiert eingeben!'); for j := 1 to FELDLAENGE2 do readln (Feld2[j]);
{ Verschmelzungsprozess beginnen } i := 1; { Variablen zurücksetzen } j := 1; for k := 1 to ERGEBNISFELDLAENGE do begin if Feld1[i] < Feld2[j] then begin ErgebnisFeld[k] := Feld1[i]; i := i + 1; end else begin ErgebnisFeld[k] := Feld2[j]; j := j + 1; end; end; { for-Schleife } { restliche Elemente des noch nicht komplett abgearbeiteten Feldes hinter dem Maximum der zuletzt verglichenen Werte anhaengen. } while j <= FELDLAENGE2 do begin ErgebnisFeld[k] := Feld2[j]; j := j + 1; k := k + 1; end; while i <= FELDLAENGE1 do begin ErgebnisFeld[k] := Feld1[i]; i := i + 1; k := k + 1; end; { Ausgabe Ergebnisfeld } writeln ('Das Ergebnisfeld ist:'); for k := 1 to ERGEBNISFELDLAENGE do write (ErgebnisFeld[k], ' '); writeln end.
|
Dieser Post wurde am 19.03.2018 um 20:28 Uhr von Bizepsbenny editiert. |