aboutsummaryrefslogtreecommitdiff
path: root/challenge-338/deadmarshal/modula-3/Ch2/src/Ch2.m3
blob: 26839504b46242f805fc4679c170093761de36a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
MODULE Ch2 EXPORTS Main;

IMPORT SIO;

VAR
  A1 := ARRAY[0..2] OF INTEGER{4,5,7};
  A2 := ARRAY[0..3] OF INTEGER{9,1,3,4};
  A3 := ARRAY[0..3] OF INTEGER{2,3,5,4};
  A4 := ARRAY[0..5] OF INTEGER{3,2,5,5,8,7};
  A5 := ARRAY[0..3] OF INTEGER{2,1,11,3};
  A6 := ARRAY[0..3] OF INTEGER{2,5,10,2};
  A7 := ARRAY[0..2] OF INTEGER{1,2,3};
  A8 := ARRAY[0..2] OF INTEGER{3,2,1};
  A9 := ARRAY[0..3] OF INTEGER{1,0,2,3};
  A10 := ARRAY[0..1] OF INTEGER{5,0};

PROCEDURE MaxDistance(VAR A1,A2:ARRAY OF INTEGER):INTEGER =
  VAR
    Max := FIRST(INTEGER);
  BEGIN
    FOR I := FIRST(A1) TO LAST(A1) DO
      FOR J := FIRST(A2) TO LAST(A2) DO
        WITH Abs = ABS(A1[I] - A2[J]) DO
          IF Abs > Max THEN Max := Abs END
        END
      END
    END;
    RETURN Max
  END MaxDistance;

BEGIN
  SIO.PutInt(MaxDistance(A1,A2)); SIO.Nl();
  SIO.PutInt(MaxDistance(A3,A4)); SIO.Nl();
  SIO.PutInt(MaxDistance(A5,A6)); SIO.Nl();
  SIO.PutInt(MaxDistance(A7,A8)); SIO.Nl();
  SIO.PutInt(MaxDistance(A9,A10)); SIO.Nl()
END Ch2.