aboutsummaryrefslogtreecommitdiff
path: root/challenge-276/deadmarshal/modula-3/ch2/src/Ch2.m3
blob: e8c706f25fdd6770279a040a08e80ed4aa243793 (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
MODULE Ch2 EXPORTS Main;

IMPORT SIO;

VAR 
  A1:ARRAY[0..5] OF INTEGER := ARRAY OF INTEGER{1,2,2,4,1,5};
  A2:ARRAY[0..4] OF INTEGER := ARRAY OF INTEGER{1,2,3,4,5};

PROCEDURE MaximumFrequency(VAR A:ARRAY OF INTEGER):INTEGER = 
VAR
  Sum:INTEGER := 0; 
  Max:INTEGER := A[FIRST(A)];  
  Hash:ARRAY[0..9] OF INTEGER := ARRAY[0..9] OF INTEGER{0,..};
BEGIN  
  FOR I := FIRST(A) TO LAST(A) DO INC(Hash[A[I]]) END;
  FOR I := FIRST(Hash) TO LAST(Hash) DO 
    IF Hash[I] > Max THEN 
      Max := Hash[I] 
    END;
  END;
  FOR I := FIRST(Hash) TO LAST(Hash) DO
    IF Hash[I] = Max THEN 
      INC(Sum,Hash[I]) 
    END
  END;
  RETURN Sum
END MaximumFrequency;

BEGIN
  SIO.PutInt(MaximumFrequency(A1)); SIO.Nl();
  SIO.PutInt(MaximumFrequency(A2)); SIO.Nl();
END Ch2.