!!! Fortran and my clumsy attempts to manipulate and display matricies, "why?" you ask, because otherwise I would have to actually revise ofc
!!!
program assign_and_print_matrix
implicit none
INTEGER, PARAMETER :: ISIZE = (3) !a single variable to define the size of potentially many matricies
integer, DIMENSION(ISIZE,ISIZE) :: ARRAY1, ARRAY2, ARRAY3, array4, trans_array3
integer :: i,j !loop variables
integer, dimension(2) :: size_array3, shape_array3
!array1 = (/1,2,3/) !putting in values for a matrix, only valid for 1 dimensional array
!nested do loops required for more than 1 dimension!
array1 = 0 !initialise the array to zero is a good practice as it removes any previous array operations done above
array2 = 0
1 format ("row number = ",i2)
2 format ("collumn number = ",i2)
3 format ("value of (",i1,i1,") = ",i4)
4 format (i3,i3,i3)
5 format (i3," ",i3," ",i3)
6 format ("The shape is "i2, i2)
7 format ("The Size is "i2,i2)
write(*,*) "STARTING ARRAY1!"
do i = 1, 3
do j = 1,3
array1(i,j) = i !putting a value in each element, elements are assigned down each collumn sequentially.
write(*,FMT=3) j,i,array1(i,j)
write(*,*) ""
end do
end do
write(*,*) "FINISHED ARRAY1!"
do i = 1,3
do j= 1,3
IF (j .eq. 3) write (*,FMT=4,ADVANCE="YES") array1(i,j)
IF (j .eq. 3) exit
write (*,FMT=4,ADVANCE="NO") array1(i,j)
end do
end do
write(*,*) "STARTING ARRAY2!"
do i = 1, 3
do j = 1,3
array2(i,j) = i*j
!write(*,FMT=1) i
!write(*,FMT=2) j
write(*,FMT=3) j,i,array2(i,j)
write(*,*) ""
end do
end do
write(*,*) "FINISHED ARRAY2!"
do i = 1,3
do j= 1,3
IF (j .eq. 3) write (*,FMT=4,ADVANCE="YES") array2(i,j)
IF (j .eq. 3) exit
write (*,FMT=4,ADVANCE="NO") array2(i,j)
end do
end do
write(*,*) "Multiply the matricies!"
array3 = MATMUL(array1, array2)
!write out as a matrix
do i = 1,3
do j= 1,3
IF (j .eq. 3) write (*,FMT=4,ADVANCE="YES") array3(i,j)
IF (j .eq. 3) exit
write (*,FMT=4,ADVANCE="NO") array3(i,j)
end do
end do
write(*,*) ""
write(*,*)"array3's (1,3) has been augmented to 22"
array3(1,3) = 22
write(*,*) array3(1,3)
write(*,*) ""
!write out as a matrix
do i = 1,3
do j= 1,3
IF (j .eq. 3) write (*,FMT=4,ADVANCE="YES") array3(i,j)
IF (j .eq. 3) exit
write (*,FMT=4,ADVANCE="NO") array3(i,j)
end do
end do
write(*,*) "some other properties of array3"
shape_array3 = shape(array3)
size_array3 = shape(array3)
!trans_array3 = transpose(array3)
write(*,*) ""
write (*,6) shape_array3
write(*,7),size_array3
do i = 1,3
do j= 1,3
array4(j,i) = array3(i,j)
write(*,*) array4(j,i)
end do
end do
write(*,*) "write out transposed matrix notice 22 has moved!"
do i = 1,3
do j= 1,3
IF (j .eq. 3) write (*,FMT=4,ADVANCE="YES") array4(i,j)
IF (j .eq. 3) exit
write (*,FMT=4,ADVANCE="NO") array4(i,j)
end do
end do
end