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

IMPORT SIO,Text,TextConv;

PROCEDURE CountAsterisks(READONLY t:TEXT):CARDINAL =
  VAR
    Len:CARDINAL := TextConv.ExplodedSize(t,SET OF CHAR{'|'});
    A:REF ARRAY OF TEXT := NEW(REF ARRAY OF TEXT,Len);
    Count:CARDINAL := 0;
  BEGIN
    TextConv.Explode(t,A^,SET OF CHAR{'|'});
    FOR I := FIRST(A^) TO LAST(A^) DO
      IF I MOD 2 = 0 THEN
        FOR J := 0 TO Text.Length(A[I])-1 DO
          IF Text.GetChar(A[I],J) = '*' THEN INC(Count) END
        END
      END
    END;
    RETURN Count
  END CountAsterisks;
  
BEGIN
  SIO.PutInt(CountAsterisks("p|*e*rl|w**e|*ekly|")); SIO.Nl();
  SIO.PutInt(CountAsterisks("perl")); SIO.Nl();
  SIO.PutInt(CountAsterisks("th|ewe|e**|k|l***ych|alleng|e")); SIO.Nl();
END Ch2.