RosettaCodeData/Task/Identity-matrix/Eiffel/identity-matrix.e

62 lines
1.1 KiB
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
class
2026-02-01 16:33:20 -08:00
APPLICATION
2023-07-01 11:58:00 -04:00
inherit
2026-02-01 16:33:20 -08:00
ARGUMENTS
2023-07-01 11:58:00 -04:00
create
2026-02-01 16:33:20 -08:00
make
2023-07-01 11:58:00 -04:00
feature {NONE} -- Initialization
2026-02-01 16:33:20 -08:00
make
-- Run application.
local
dim : INTEGER -- Dimension of the identity matrix
do
from dim := 1 until dim > 10 loop
print_matrix( identity_matrix(dim) )
dim := dim + 1
io.new_line
end
2023-07-01 11:58:00 -04:00
2026-02-01 16:33:20 -08:00
end
2023-07-01 11:58:00 -04:00
feature -- Access
2026-02-01 16:33:20 -08:00
identity_matrix(dim : INTEGER) : ARRAY2[REAL_64]
require
dim > 0
local
matrix : ARRAY2[REAL_64]
i : INTEGER
do
create matrix.make_filled (0.0, dim, dim)
from i := 1 until i > dim loop
matrix.put(1.0, i, i)
i := i + 1
end
Result := matrix
end
print_matrix(matrix : ARRAY2[REAL_64])
local
i, j : INTEGER
do
from i := 1 until i > matrix.height loop
print("[ ")
from j := 1 until j > matrix.width loop
print(matrix.item (i, j))
print(" ")
j := j + 1
end
print("]%N")
i := i + 1
end
end
2023-07-01 11:58:00 -04:00
end