Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
cp:obx-proc-type [2024/08/14 21:40] theathlete [Пример] |
cp:obx-proc-type [2024/08/28 10:41] (текущий) theathlete [Пример] |
||
|---|---|---|---|
| Строка 13: | Строка 13: | ||
| TYPE | TYPE | ||
| - | | + | |
| - | | + | |
| - | PROCEDURE Add(a, b: LONGINT): LONGINT; | + | PROCEDURE Add(VAR acc: LONGINT; cur: INTEGER); |
| - | BEGIN RETURN a + b END Add; | + | BEGIN acc := acc + cur END Add; |
| - | PROCEDURE Sub(a, b: LONGINT): LONGINT; | + | PROCEDURE Sub(VAR acc: LONGINT; cur: INTEGER); |
| - | BEGIN RETURN a - b END Sub; | + | BEGIN acc := acc - cur END Sub; |
| - | PROCEDURE Mul(a, b: LONGINT): LONGINT; | + | PROCEDURE Mul(VAR acc: LONGINT; cur: INTEGER); |
| - | BEGIN RETURN a * b END Mul; | + | BEGIN acc := acc * cur END Mul; |
| - | PROCEDURE Div(a, b: LONGINT): LONGINT; | + | PROCEDURE Div(VAR acc: LONGINT; cur: INTEGER); |
| - | BEGIN RETURN a DIV b END Div; | + | BEGIN acc := acc DIV cur END Div; |
| - | PROCEDURE Greater(a, b: LONGINT): BOOLEAN; | + | PROCEDURE Greater(VAR acc: BOOLEAN; |
| - | BEGIN RETURN | + | BEGIN acc := acc & (a > b) END Greater; |
| - | PROCEDURE Less(a, b: LONGINT): BOOLEAN; | + | PROCEDURE Less(VAR acc: BOOLEAN; |
| - | BEGIN RETURN | + | BEGIN acc := acc & (a < b) END Less; |
| - | PROCEDURE | + | PROCEDURE |
| VAR | VAR | ||
| - | i, res: LONGINT; | + | i: INTEGER; |
| + | acc: LONGINT; | ||
| BEGIN | BEGIN | ||
| - | | + | |
| - | FOR i := 1 TO LEN(nums) - 1 DO | + | FOR i := 1 TO LEN(nums) - 1 DO c(acc, nums[i]) END; |
| - | res := c(res, nums[i]); | + | RETURN |
| - | | + | END ReduceLong; |
| - | RETURN | + | |
| - | END ReduceLongint; | + | |
| - | PROCEDURE | + | PROCEDURE |
| VAR | VAR | ||
| - | i: LONGINT; | + | i: INTEGER; |
| - | | + | |
| BEGIN | BEGIN | ||
| - | | + | |
| - | FOR i := 1 TO LEN(nums) - 1 DO | + | REPEAT |
| - | | + | c(acc, nums[i-1], nums[i]); |
| - | | + | INC(i); |
| - | RETURN | + | |
| - | END ReduceBoolean; | + | RETURN |
| + | END ReduceBool; | ||
| PROCEDURE Start*; | PROCEDURE Start*; | ||
| VAR | VAR | ||
| - | sn: ARRAY 5 OF LONGINT; (* sn - some nums *) | + | sn: ARRAY 5 OF INTEGER; (* sn - some nums *) |
| - | orderedNums: | + | orderedNums: |
| sum, mul: LONGINT; | sum, mul: LONGINT; | ||
| greater, less: BOOLEAN; | greater, less: BOOLEAN; | ||
| - | | ||
| BEGIN | BEGIN | ||
| sn[0] := 1; sn[1] := 3; sn[2] := 5; sn[3] := 7; sn[4] := 9; | sn[0] := 1; sn[1] := 3; sn[2] := 5; sn[3] := 7; sn[4] := 9; | ||
| - | | + | |
| + | | ||
| Out.String(' | Out.String(' | ||
| - | mul := ReduceLongint(sn, Mul); | + | mul := ReduceLong(sn, Mul); |
| Out.String(' | Out.String(' | ||
| Строка 75: | Строка 75: | ||
| orderedNums[1] := 5; | orderedNums[1] := 5; | ||
| orderedNums[2] := 1; | orderedNums[2] := 1; | ||
| - | | + | |
| + | | ||
| Out.String(' | Out.String(' | ||
| - | less := ReduceBoolean(orderedNums, | + | less := ReduceBool(orderedNums, |
| Out.String(' | Out.String(' | ||
| END Start; | END Start; | ||