Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program game
- implicit none
- type measure
- real(4)::amount
- character(len=4)::units
- end type measure
- integer::points=0,r
- real::r0,rk
- character(len=1)::prompt
- type(measure)::british(1:6),metric(1:6),answer
- british(1:6).amount=1
- british(1).units='in'
- metric(1)=measure(2.54,'cm')
- british(2).units='ft'
- metric(2)=measure(30.48,'cm')
- british(3).units='yd'
- metric(3)=measure(91.44,'cm')
- british(4).units='cable'
- metric(4)=measure(185.2,'m')
- british(5).units='mile'
- metric(5)=measure(1609.344,'m')
- british(6).units='knot'
- metric(6)=measure(1852,'m')
- write(*,'(a\)') 'r0(0<r0<1)='
- read(*,*) r0
- do while (.true.)
- r=random_int(r0)
- write(*,'(f3.1,1x,a4,1x,a8)') british(r),' equals?'
- read(*,*) answer.amount,answer.units
- if ((answer.amount .EQ. metric(r).amount) .AND. (answer.units .EQ. metric(r).units)) then
- write(*,*) 'Correct!'
- points=points+1
- else
- write(*,*) 'Wrong'
- write(*,*) 'Your score is:',points
- write(*,*) 'Continue(y/n)?'
- read(*,*) prompt
- if (prompt .EQ. 'y') then
- points=0
- continue
- else
- stop
- end if
- end if
- end do
- contains
- function random_int(r0) result (r) !Генератор псевдослучайных чисел
- implicit none
- real,intent(inout)::r0
- real::r1
- real(8),parameter::pi_8=4*atan(1.0_8)
- integer::r
- integer,parameter::a=1,b=6
- r1=(pi_8-2+r0)**3
- r1=r1-floor(r1)
- r0=r1
- r1=(b-a)*r1+a
- r=nint(r1)
- end function random_int
- end program game
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement