RosettaCodeData/Task/Periodic-table/Modula-2/periodic-table.mod2

40 lines
790 B
Plaintext

MODULE PeriodicTable;
FROM STextIO IMPORT
WriteLn, WriteString;
FROM SWholeIO IMPORT
WriteInt;
TYPE
TAB = ARRAY [0 .. 7] OF INTEGER;
TANum = ARRAY [0 .. 9] OF INTEGER;
CONST
A = TAB{1, 2, 5, 13, 57, 72, 89, 104};
B = TAB{-1, 15, 25, 35, 72, 21, 58, 7};
PROCEDURE ShowRowAndColumn(ANum: INTEGER);
VAR
I, M, R, C: CARDINAL;
BEGIN
I := 7;
WHILE A[I] > ANum DO
I := I - 1
END;
M := ANum + B[I];
R := M DIV 18 + 1;
C := M MOD 18 + 1;
WriteInt(ANum, 3);
WriteString(" ->");
WriteInt(R, 2);
WriteInt(C, 3);
WriteLn;
END ShowRowAndColumn;
VAR
J : CARDINAL;
ANum: TANum; (* Example elements (atomic numbers) *)
BEGIN
ANum := TANum{1, 2, 29, 42, 57, 58, 72, 89, 90, 103};
FOR J := 0 TO 9 DO
ShowRowAndColumn(ANum[J])
END
END PeriodicTable.