Advertisement
apfel2kuchen

Lösung Aufgabe 2.2

Oct 24th, 2014
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. "Einführung in die imperative Programmierung", Aufgabenheft 2
  2. Musterlösung zur Aufgabe 2
  3. program merge (input, output);
  4. { liest ohne Eingabeueberpruefung zwei sortierte Felder mit
  5. integer-Zahlen ein; beide Felder werden in Feld sortiert
  6. zusammengefuegt; das Ergebnis wird ausgegeben; ist die Ein-
  7. gabe unsortiert, so ist das Ergebnisfeld nicht sortiert }
  8. const
  9. GRENZE1 = 5;
  10. GRENZE2 = 8;
  11. GRENZE1PLUS1 = 6;
  12. GRENZE2PLUS1 = 9;
  13. GRENZE = 13; { GRENZE1 + GRENZE2 }
  14.  
  15. type
  16. tIndex1 = 1..GRENZE1;
  17. tIndex2 = 1..GRENZE2;
  18. tIndex = 1..GRENZE;
  19. tIndex1Plus1 = 1..GRENZE1PLUS1;
  20. tIndex2Plus1 = 1..GRENZE2PLUS1;
  21. tIndexPlus1 = 1..GRENZE + 1;
  22. tFeld1 = array [tIndex1] of integer;
  23. tFeld2 = array [tIndex2] of integer;
  24. tFeld = array [tIndex] of integer;
  25.  
  26. var
  27. Feld1 : tFeld1;
  28. Feld2 : tFeld2;
  29. Feld : tFeld;
  30. i : tIndex1Plus1;
  31. j : tIndex2Plus1;
  32. k : tIndexPlus1;
  33. begin
  34. { sortierte Felder einlesen }
  35. writeln ('Bitte', GRENZE1:2, ' Werte des ersten Feldes ',
  36. 'sortiert eingeben!');
  37. for i := 1 to GRENZE1 do
  38. readln (Feld1[i]);
  39. writeln ('Bitte', GRENZE2:2, ' Werte des zweiten Feldes ',
  40. 'sortiert eingeben!');
  41. for j := 1 to GRENZE2 do
  42. readln (Feld2[j]);
  43.  
  44. { Verschmelzungsprozess beginnen }
  45. i := 1;
  46. j := 1;
  47. k := 1;
  48. while (i <= GRENZE1) and (j <= GRENZE2) do
  49. if Feld1[i] < Feld2[j] then
  50. begin
  51. Feld[k] := Feld1[i];
  52. i := i + 1;
  53. k := k + 1
  54. end
  55. else
  56. begin
  57. Feld[k] := Feld2[j];
  58. j := j + 1;
  59. k := k + 1
  60. end; { while-Schleife }
  61. { restliche Elemente des noch nicht komplett abgearbeiteten
  62. Feldes hinter dem Maximum der zuletzt verglichenen
  63. Werte anhaengen }
  64. if i > GRENZE1 then { Feld1 ist erschoepft, restliche
  65. Elemente von Feld2 angefuegen }
  66. while j <= GRENZE2 do
  67. begin
  68. Feld[k] := Feld2[j];
  69. k := k + 1;
  70. j := j + 1
  71. end
  72. else { Feld2 ist erschoepft, restliche Elemente von
  73. Feld1 angefuegen }
  74. while i <= GRENZE1 do
  75. begin
  76. Feld[k] := Feld1[i];
  77. k := k + 1;
  78. i := i + 1
  79. end;
  80.  
  81. writeln ('Das Ergebnisfeld ist:');
  82. for k := 1 to GRENZE do
  83. write (Feld[k]:8);
  84. writeln
  85. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement