File: zivot.f

package info (click to toggle)
zivot 20013101-3
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd, lenny, squeeze, wheezy
  • size: 100 kB
  • ctags: 18
  • sloc: fortran: 72; makefile: 43
file content (88 lines) | stat: -rw-r--r-- 1,550 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
	program zivot
	parameter (ndim=20,mdim=20,nborn=2,nmin=2,nmax=5)
	character*1 a(ndim+2,mdim+2),anew(ndim+2,mdim+2),atmp(mdim+2)

	do 10 i=1,ndim+2
	  do 15 j=1,mdim+2
	    a(i,j)=' '
	    anew(i,j)=' '
15	  continue
10	continue

	do 16 i=2,mdim+1
	  a(1,i)='-'
	  a(ndim+2,i)='-'
16	continue
	
	do 17 i=2,ndim+1
	  a(i,1)='|'
	  a(i,mdim+2)='|'
17	continue
	
	a(1,1)='+'
	a(ndim+2,mdim+2)='+'
	a(1,mdim+2)='+'
	a(ndim+2,1)='+'

c	write(*,*) 'pocet zivocichov:'
	write(*,*) 'number of animals:'
	read(*,*) nziv

	do 20 i=1,nziv
c	  write(*,*) 'pozicia',i,'. zivocicha:'
	  write(*,*) 'position of',i,'th animal:'
	  read(*,*) ii,jj
	  a(ii+1,jj+1)='#'
20	continue


	do 22 i=1,ndim+2
	  do 24 j=1,mdim+2
	    atmp(j)=a(i,j)
	    anew(i,j)=a(i,j)
24	  continue
	  write(*,*) atmp
22	continue
	read(*,*)

1	do 30 i=2,ndim+1
	  do 32 j=2,mdim+1
	    nneigh=0
	    do 34 ii=i-1,i+1
	      if (a(ii,j-1).eq.'#') nneigh=nneigh+1
	      if (a(ii,j+1).eq.'#') nneigh=nneigh+1
34	    continue
	    if (a(i-1,j).eq.'#') nneigh=nneigh+1
	    if (a(i+1,j).eq.'#') nneigh=nneigh+1

	    if (a(i,j).ne.'#') then
	      if (nneigh.eq.2) then
	        anew(i,j)='#'
	      else
	        anew(i,j)=' '
	      endif
	    else
	      if ((nneigh.gt.nmax).or.(nneigh.lt.nmin)) then
	        anew(i,j)=' '
	      else 
	        anew(i,j)='#'
	      endif
	    endif
32	  continue
30	continue

	do 40 i=1,ndim+2
	  do 45 j=1,mdim+2
	    atmp(j)=anew(i,j)
	    a(i,j)=anew(i,j)
45	  continue
	  write(*,*) atmp
40	continue
	
	read(*,*)
	goto 1

100	format(a80)
	stop
	end