Advertisement
apfel2kuchen

FUNZT LAST

Oct 26th, 2014
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. program merge (input, output);
  2. { liest ohne Eingabeueberpruefung zwei sortierte Felder mit
  3. integer-Zahlen ein; beide Felder werden in Feld sortiert
  4. zusammengefuegt; das Ergebnis wird ausgegeben; ist die Ein-
  5. gabe unsortiert, so ist das Ergebnisfeld nicht sortiert }
  6. const
  7. GRENZE1 = 5;
  8. GRENZE2 = 8;
  9. GRENZE = 13; { GRENZE1 + GRENZE2 }
  10. GRENZE1PLUS1 = 6;
  11. GRENZE2PLUS1 = 9;
  12. GRENZEPLUS1 = 14;
  13.  
  14. type
  15. tIndex1 = 1..GRENZE1;
  16. tIndex2 = 1..GRENZE2;
  17. tIndex = 1..GRENZE;
  18. tIndex1Plus1 = 1..GRENZE1PLUS1;
  19. tIndex2Plus1 = 1..GRENZE2PLUS1;
  20. tIndexPlus1 = 1..GRENZEPLUS1;
  21. tFeld1 = array [tIndex1] of integer;
  22. tFeld2 = array [tIndex2] of integer;
  23. tFeld = array [tIndex] of integer;
  24.  
  25. var
  26. Feld1 : tFeld1;
  27. Feld2 : tFeld2;
  28. Feld : tFeld;
  29. i : tIndex1Plus1;
  30. j : tIndex2Plus1;
  31. k : tIndexPlus1;
  32.  
  33. {EVTL WEITERE VARIABLEN}
  34. begin
  35. { sortierte Felder einlesen }
  36. writeln ('Bitte', GRENZE1:2, ' Werte des ersten Feldes ',
  37. 'sortiert eingeben!');
  38. for i := 1 to GRENZE1 do
  39. readln (Feld1[i]);
  40. writeln ('Bitte', GRENZE2:2, ' Werte des zweiten Feldes ',
  41. 'sortiert eingeben!');
  42. for j := 1 to GRENZE2 do
  43. readln (Feld2[j]);
  44.  
  45.  
  46. {Sortieren der Arrays über eine While Schleife}
  47. i := 1; {Index Feld1}
  48. j := 1; {Index Feld2}
  49.  
  50. for k := 1 to GRENZE do
  51. begin
  52. if (i<=GRENZE1) and (j <=GRENZE2) then
  53. begin {Pruefe ob Feld1 oder Feld 2 Leer ist, wenn ja dann ELSE}
  54. if (feld1[i] <= feld2[j]) then
  55. begin {Wert von Feld1 <= Feld2, dann Speichere Wert in Feld[k]}
  56. feld[k] := feld1[i];
  57. i := i + 1;
  58. end
  59. else if (feld2[j] <= feld1[i]) then
  60. begin {Wert von Feld2 <= Feld1, dann Speichere Wert in Feld[k]}
  61. feld[k] := feld2[j];
  62. j := j + 1;
  63. end
  64. end
  65. else {Feld1 oder Feld2 ist Leer, prüfe welches}
  66. if (i > GRENZE1) then
  67. begin {Feld1 leer -> Leere Feld2}
  68. feld[k] := feld2[j];
  69. j := j + 1;
  70. end
  71. else
  72. begin {Feld2 ist Leer -> Leere Feld1}
  73. feld[k] := feld1[i];
  74. i := i + 1;
  75. end
  76. end;
  77.  
  78. writeln ('Das Ergebnisfeld ist:');
  79. for k := 1 to GRENZE do
  80. write (Feld[k]:8);
  81. writeln
  82. end. { merge }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement