Fortran 千本ノック 2

11本目 行列を"行""列"の順番でつくる!

 
    integer,dimension(8)::arr
  integer,dimension(2,4)::arr2
  arr = (/1,2,3,4,5,6,7,8/)

  arr2 = transpose(reshape(arr,(/4,2/))) 
  ! 
  ! ko iu gyouretu ni naru 
  ! 
  ! 1 2 3 4
  ! 5 6 7 8

12本目 行列の行にアクセス!

 
  integer,dimension(8)::arr
  integer,dimension(2,4)::arr2
  arr = (/1,2,3,4,5,6,7,8/)

  arr2 = transpose(reshape(arr,(/4,2/))) 
  v = arr2(2,:)
  ! v ha -> 5 6 7 8

13本目 doループをする!

 

  do i = 1,10 
    print *, "i = ",i 
  end do

14本目 内積を計算する!

 

  implicit none
   
  integer,dimension(2,3)::a
  integer,dimension(3,1)::v
  integer,dimension(2,1)::res 
  integer::i,j,s
  
  a = transpose(reshape((/1,2,3,4,5,6/),(/3,2/)))
  v = transpose(reshape((/1,2,3/),(/1,3/)))
   
  ! ko iu jyoutai
  ! 
  ! [ 1 2 3 ].[1]
  ! [ 4 5 6 ] [2]
  !           [3]
  
  do i = 1,2
    s = 0
    do j = 1,3
      s = s + a(i, j) * v(j,1)
    end do
    res(i,1) = s
  end do
   
  print *,"res = ",res