Werbung

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

array merge

Dieses Thema im Forum "Pascal" wurde erstellt von Bizepsbenny, 19. März 2018.

  1. Bizepsbenny

    Bizepsbenny New Member

    Hallo zusammen,
    ich habe das folgende Programm zur Verschmelzung zweier unterschiedlich großer, aber sortierter arrays geschrieben. Den Verschmelzungsprozess habe ich mit einer for-Schleife gelöst, die die Werte der arrays vergleicht, und in das Ergebnisfeld kopiert. Danach wollte ich die Werte aus dem übrigen Feld über eine while-Schleife ebenfalls in das Ergebnisfeld kopieren. Frage: Warum funktioniert es nicht?

    Code (Text):
    Quelltext kopieren
    1.  
    2.  
    3. program merge (input, output);
    4. { liest ohne Eingabeueberpruefung zwei sortierte Felder mit
    5.   integer-Zahlen ein; beide Felder werden in einem weiteren Feld
    6.   sortiert zusammengefuegt; das Ergebnis wird ausgegeben; ist
    7.   die Eingabe unsortiert, so ist das Ergebnisfeld undefiniert }
    8.   const
    9.   FELDLAENGE1 = 5;
    10.   FELDLAENGE2 = 8;
    11.   ERGEBNISFELDLAENGE = 13; { FELDLAENGE1 + FELDLAENGE2 }
    12.    
    13.   type
    14.   tFeld1 = array [1..FELDLAENGE1] of integer;
    15.   tFeld2 = array [1..FELDLAENGE2] of integer;
    16.   tErgebnisFeld = array [1..ERGEBNISFELDLAENGE] of integer;
    17.  
    18.   var
    19.   Feld1 : tFeld1;
    20.   Feld2 : tFeld2;
    21.   ErgebnisFeld : tErgebnisFeld;
    22.   i : integer;
    23.   j : integer;
    24.   k : integer;
    25. begin
    26.   { sortierte Felder einlesen }
    27.   writeln ('Bitte', FELDLAENGE1:2, ' Werte des ersten Feldes ',
    28.   'sortiert eingeben!');
    29.   for i := 1 to FELDLAENGE1 do
    30.   readln (Feld1[i]);
    31.   writeln ('Bitte', FELDLAENGE2:2, ' Werte des zweiten Feldes ',
    32.   'sortiert eingeben!');
    33.   for j := 1 to FELDLAENGE2 do
    34.   readln (Feld2[j]);
    35.  
    36.   { Verschmelzungsprozess beginnen }
    37.   i := 1; { Variablen zurücksetzen }
    38.   j := 1;
    39.  
    40.   for k := 1 to ERGEBNISFELDLAENGE do
    41.   begin
    42.   if Feld1[i] < Feld2[j] then
    43.   begin
    44.   ErgebnisFeld[k] := Feld1[i];
    45.   i := i + 1;
    46.   end { NUR hier DARF KEIN Semikolon stehen, unmittelbar vor else! }
    47.   else
    48.   begin
    49.   ErgebnisFeld[k] := Feld2[j];
    50.   j := j + 1;
    51.   end;
    52.   end; { for-Schleife }
    53.  
    54.   { restliche Elemente des noch nicht komplett abgearbeiteten
    55.   Feldes hinter dem Maximum der zuletzt verglichenen
    56.   Werte anhaengen.  }
    57.   while j <= FELDLAENGE2 do
    58.   begin
    59.   ErgebnisFeld[k] := Feld2[j];
    60.   j := j + 1;
    61.   k := k + 1;
    62.   end;
    63.   while i <= FELDLAENGE1 do
    64.   begin
    65.   ErgebnisFeld[k] := Feld1[i];
    66.   i := i + 1;
    67.   k := k + 1;
    68.   end;
    69.  
    70.   { Ausgabe Ergebnisfeld }
    71.   writeln ('Das Ergebnisfeld ist:');
    72.   for k := 1 to ERGEBNISFELDLAENGE do
    73.   write (ErgebnisFeld[k], ' ');
    74.   writeln
    75. end.
    76.  
    77.  
    78. [\code]
    79.  
    80.  
    81. Danke schonmal im voraus :)
  2. coding-board

    coding-board Member

    Werbung
Die Seite wird geladen...
Ähnliche Themen - array merge Forum Datum
Arrays-Übungsaufgabe gibt mir Rätsel auf C/C++ Dienstag um 00:41 Uhr
Index eines umgedrehten arrays wiedergeben Java 10. Mai 2018
Javascript Array Problem/Frage JavaScript 19. April 2018
(C++) einen String zerteilen und die einzelnen Zeichen in ein char array speichern C/C++ 14. April 2018
Typecast Chararray C/C++ 25. März 2018