blob: 13df19051b47e1c3695e4850df37d0ef973f2302 (
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
MODULE Ch2;
IMPORT Out;
TYPE
PArr = POINTER TO ARRAY OF LONGINT;
VAR
A1:ARRAY 8 OF LONGINT;
A2:ARRAY 3 OF LONGINT;
A3:ARRAY 5 OF LONGINT;
ret1,ret2,ret3:PArr;
PROCEDURE Init;
BEGIN
A1[0] := 1; A1[1] := 0; A1[2] := 2; A1[3] := 3;
A1[4] := 0; A1[5] := 4; A1[6] := 5; A1[7] := 0;
A2[0] := 1; A2[1] := 2; A2[2] := 3;
A3[0] := 0; A3[1] := 3; A3[2] := 0;
A3[3] := 4; A3[4] := 5;
END Init;
PROCEDURE DuplicateZeros(VAR arr:ARRAY OF LONGINT):PArr;
VAR
ret:PArr;
i,j:LONGINT;
BEGIN
NEW(ret,LEN(arr));
i := 0; j := 0;
WHILE j <= LEN(arr)-1 DO
IF arr[i] = 0 THEN
ret[j] := 0; INC(j); ret[j] := 0;
INC(i); INC(j);
ELSE
ret[j] := arr[i]; INC(i); INC(j);
END
END;
RETURN ret
END DuplicateZeros;
PROCEDURE PrintArray(VAR arr:ARRAY OF LONGINT);
VAR i:LONGINT;
BEGIN
FOR i := 0 TO LEN(arr)-1 DO Out.Int(arr[i],0); Out.Char(' ') END;
Out.Ln
END PrintArray;
BEGIN
Init;
ret1 := DuplicateZeros(A1);
ret2 := DuplicateZeros(A2);
ret3 := DuplicateZeros(A3);
PrintArray(ret1^);
PrintArray(ret2^);
PrintArray(ret3^);
END Ch2.
|