Fortran에서 "치탄다 탄다"

12609 단어 치탄다Fortran
Fortran에서도 즐길 수 있다 ~ 나 신경이 쓰입니다!

실행은 Intel visual fortran 2015beta에서. 안마 실행 결과를 확인하지 않았습니다 w

추기 : 척수 반사로 썼기 때문에 영어가 쌓여 G와 Z의 발음이 어느 쪽도 「지」가 되어 버렸어요 풀 불가피
추가: 수정했습니다. 드디어 코멘트를 달아 보았습니다.

합 숫자로 고치는 함수는 만의 자리까지만 대응하고 있습니다.
    module m_jp
      implicit none
      character(len=8), parameter :: alpha(26) = ['えー','びー','しー','でー','いー',&
       'えふ','じー','えっち','あい','じぇー','けー','える','えむ','えぬ','おー','ぴー',&
       'きゅー','あーる','えす','てー','ゆー','ぶい','だぶりゅ','えっくす','わい','ずぃー']
      character(len=2), parameter :: jnum1(0:9) = ['','一','二','三','四', &
                                                 '五','六','七','八','九']
      character(len=2), parameter :: jnum2(4)   = ['万','千','百','十']
    contains
      function jnumber(m)  
        integer, intent(in) :: m
        character(len = :), allocatable :: jnumber ! f2003 可変長文字列 
        character(len = 5) :: tmp
        integer :: i, k(5)
        write(tmp, '(i5.0)') m  ! internal file 5桁の整数値を文字列に 
        read(tmp, '(5i1.0)') k  ! 文字列を1桁づつの整数に変換
        jnumber = ''
        do i = 1, 4
          select case(k(i))
            case(0)
              cycle
            case(1)  
              jnumber = jnumber // jnum2(i)                  ! 一千 等の一を避ける。
            case(2:9) 
              jnumber = jnumber // jnum1(k(i)) // jnum2(i)   ! 万、千、百、十の位
            case default
              stop 'unexpected input: jnumber'
          end select   
        end do
        jnumber = jnumber // trim(jnum1(k(5)))     ! 一の位 一を出力する。空白カット。
      end function jnumber  
    end module m_jp  

    program chitanda
      use m_jp
      implicit none
      integer :: i
      do i = 1, 1000
        print *, jnumber(i), '反田', alpha(mod(i - 1, 26) + 1)  
      end do
    end program chitanda

좋은 웹페이지 즐겨찾기