64 lines
1.1 KiB
Plaintext
64 lines
1.1 KiB
Plaintext
MODULE TrabbPardoKnuth;
|
|
|
|
FROM STextIO IMPORT
|
|
SkipLine, WriteString, WriteLn;
|
|
FROM SRealIO IMPORT
|
|
ReadReal, WriteFixed;
|
|
FROM SWholeIO IMPORT
|
|
WriteInt;
|
|
FROM RealMath IMPORT
|
|
sqrt;
|
|
|
|
CONST
|
|
Size = 11;
|
|
|
|
TYPE
|
|
TSequence = ARRAY [1 .. Size] OF REAL;
|
|
|
|
VAR
|
|
S: TSequence;
|
|
I: CARDINAL;
|
|
Result: REAL;
|
|
|
|
PROCEDURE ReverseSequence(VAR S: TSequence);
|
|
VAR
|
|
I: CARDINAL;
|
|
Temp: REAL;
|
|
BEGIN
|
|
FOR I := 1 TO Size DIV 2 DO
|
|
Temp := S[I];
|
|
S[I] := S[Size - I + 1];
|
|
S[Size - I + 1] := Temp;
|
|
END;
|
|
END ReverseSequence;
|
|
|
|
PROCEDURE DoOperation(Item: REAL): REAL;
|
|
BEGIN
|
|
RETURN sqrt(ABS(Item)) + 5.0 * Item * Item * Item;
|
|
END DoOperation;
|
|
|
|
BEGIN
|
|
WriteString("Enter 11 numbers.");
|
|
WriteLn;
|
|
FOR I := 1 TO Size DO
|
|
WriteInt(I, 2);
|
|
WriteString(": ");
|
|
ReadReal(S[I]);
|
|
SkipLine
|
|
END;
|
|
ReverseSequence(S);
|
|
WriteLn;
|
|
FOR I := 1 TO Size DO
|
|
Result := DoOperation(S[I]);
|
|
WriteString("f(");
|
|
WriteFixed(S[I], 3, 8);
|
|
WriteString(") = ");
|
|
IF Result > 400.0 THEN
|
|
WriteString("overflow");
|
|
ELSE
|
|
WriteFixed(Result, 3, 8)
|
|
END;
|
|
WriteLn;
|
|
END;
|
|
END TrabbPardoKnuth.
|