Anonymous Anonymous - 25 days ago
86 0

No description

Pascal

asdfasdf

PROGRAM Feldverarbeitung;

VAR
  a1, a2, a3: ARRAY[1..5] OF INTEGER;
  n: INTEGER;


PROCEDURE Sort(VAR a: ARRAY OF INTEGER);
VAR
  i, j, tmp: INTEGER;
BEGIN
  FOR i := high(a) DOWNTO 1 DO BEGIN
    FOR j := 1 TO i DO BEGIN
      IF a[j-1] > a[j] THEN BEGIN
        tmp := a[j-1];
        a[j-1] := a[j];
        a[j] := tmp;
        i := j;
      END;
    END;
  END;
END;

PROCEDURE Merge(a1, a2: ARRAY OF INTEGER; VAR a3: ARRAY OF INTEGER; VAR n3: INTEGER);
(*Ich weiß dass das VIEL einfacher ginge, aber ich umgehe damit fehler die durch nicht
sortierte arrays in der eingabe hervorgerufen werden könnten*)
VAR
  i, j: INTEGER;(*Zählvariablen*)
  exists: BOOLEAN;(*existiert der Wert im anderen array?*)
BEGIN
  n3 := 0;
  FOR i := 1 TO length(a1) DO BEGIN(*alle Werte in a1 überprüfen*)
    exists := FALSE;
    FOR j := 1 TO length(a2) DO BEGIN(*mit jedem Wert in a2 vergleichen*)
      WriteLn(i, ' ', j);
      IF a1[i] = a2[j] THEN BEGIN
        WriteLn('GEFUNDEN');
        exists := TRUE;
        j := length(a2) + 1;
      END;
    END;
    IF (exists = FALSE) AND (n3 <= length(a3)) THEN BEGIN(*nicht in beiden vorhanden und platz in a3*)
      a3[n3+1] := a1[i];
      n3 := n3 + 1;
    END;
    IF n3 > length(a3) THEN BEGIN(*kein platz in a3*)
      n3 := -1;
      i := length(a1) + 1;
    END;
  END;
  
  FOR i := 1 TO length(a2) DO BEGIN(*alle werte in a2 überprüfen*)
    exists := FALSE;
    FOR j := 1 TO length(a1) DO BEGIN(*mit jedem wert in a1 vergleichen*)
      IF a2[i] = a1[j] THEN BEGIN
        exists := TRUE;
        j := length(a1) + 1;
      END;
    END;
    IF (exists = FALSE) AND (n3 <= length(a3)) THEN BEGIN(*nicht in beiden vorhanden und platz in a3*)
      a3[n3+1] := a2[i];
      n3 := n3 + 1;
    END;
    IF n3 > length(a3) THEN BEGIN(*kein platz in a3*)
      n3 := -1;
      i := length(a2) + 1;
    END;
  END;
  Sort(a3);
END;



BEGIN
  a1[1] := 1;
  a1[2] := 2;
  a1[3] := 3;
  a1[4] := 4;
  a1[5] := 7;
  
  a2[1] := 1;
  a2[2] := 2;
  a2[3] := 3;
  a2[4] := 5;
  a2[5] := 6;
  
  Merge(a1, a2, a3, n);
  WriteLn(n);
END.