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