diff options
Diffstat (limited to 'challenge-235/deadmarshal/pascal/ch2.pas')
| -rw-r--r-- | challenge-235/deadmarshal/pascal/ch2.pas | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/challenge-235/deadmarshal/pascal/ch2.pas b/challenge-235/deadmarshal/pascal/ch2.pas new file mode 100644 index 0000000000..7196dfd07e --- /dev/null +++ b/challenge-235/deadmarshal/pascal/ch2.pas @@ -0,0 +1,53 @@ +program Ch2; + +{$mode objfpc} +uses + SysUtils,Types; + +var + A1,A2,A3,Ret1,Ret2,Ret3:TIntegerDynArray; + +function DuplicateZeros(var Arr:TIntegerDynArray):TIntegerDynArray; +var + I,J:Integer; +begin + SetLength(Result,Length(Arr)); + I := 0; J := 0; + while J <= High(Arr) do + begin + if Arr[I] = 0 then + begin + Result[J] := 0; + Inc(J); + Result[J] := 0; + Inc(I); + Inc(J); + end + else + begin + Result[J] := Arr[I]; + Inc(I); + Inc(J); + end; + end; +end; + +procedure PrintArray(var Arr:TIntegerDynArray); +var I:Integer; +begin + for I := Low(Arr) to High(Arr) do Write(Arr[I], ' '); + WriteLn; +end; + +begin + A1 := [1,0,2,3,0,4,5,0]; + A2 := [1,2,3]; + A3 := [0,3,0,4,5]; + Ret1 := DuplicateZeros(A1); + Ret2 := DuplicateZeros(A2); + Ret3 := DuplicateZeros(A3); + PrintArray(Ret1); + PrintArray(Ret2); + PrintArray(Ret3); +end. + |
