Новичок
Профиль
Группа: Участник
Сообщений: 7
Регистрация: 8.6.2008
Репутация: нет Всего: нет
|
Здравствуйте! Помогите пожалуйста! У меня есть программа, написанная на старой версии фортрана! Надо сделать так, чтобы она работала на Visual Fortran! Я вам буду очень очень благодарна!!!  Заранее ОГРОМНОЕ СПАСИБО!!! P.s. и если не трудно, сделайте комментарии что именно какой блок выполняет! Вот код программы: Код | parameter (k5=5,m10=10) dimension x(60,200),y(60,200),pf(k5),pdf(k5,k5,200),pfx(60,k5) *,b(60),br(30),a(k5+1,201),xa(500),proc(60),po(30) integer*2 xdek,ydek,ix,eof,f(60),d(60,200),n(200),da(50) *,lpr(30),mki(200),kpar(m10),klt(m10),god(m10),gdp,hy,kolp real*4 jxy(200) real*8 r,s,h(10),rp(60,5)/300*1.0/ character yn*1,imap*12,tire*8/'--------'/ equivalence (x(1,1),xa(1)) cc equivalence (x(1,1),xa(1)),(x(1,100),da(1)) 101 FORMAT (5x,i3,' ЇаҐ¤ЁЄв в (',i2,' ¤ҐЄ ¤ )'/ *5x,26(1h-)) 102 format (13f6.1) 103 format ('Є®«-ў® д §=',i1,' ”(',i2,')=') 104 format (40I2) 105 FORMAT (2x,i3,' ЇаҐ¤ЁЄвop (',i2,' ¤ҐЄ ¤ )') 106 format ('Є®«-ў® Ја ¤ жЁ©=',i1,' D=') 110 format (7x,'ўҐа®пв®бвЁ ®бгйҐбвў«ҐЁп д §') 111 format (2x,'!------!',7(a8,'!')) 112 format (2x,'! Ј®¤ !',7(4x,i1,' !')) 113 format (2x,'! ',i4,' !',7(f7.4,' !')) 120 format (3x,'®¦Ё¤ Ґ¬®Ґ а бЇаҐ¤Ґ«ҐЁҐ ўҐа®пв®б⥩ ',i4, *' Ј®¤(',i2,' ¤eЄ ¤ , ',i3,' Ї а-а)') 121 format (5x,8f7.4) write (*,*)' а Ў®в Ґв Їа®Ја ¬¬ beies - ўҐа®пв®бвл© Їа®Ј®§' write (*,*) ' ¬Ґв®¤®¬ Ѓe©Ґб ' write (*,*) 'ўўҐ¤ЁвҐ Ё¬п д ©« ЇҐз вЁ (CON - Є®б®«м)' 5 FORMAT (a12) read (*,5) imap open (unit=7,file=imap,status='new') write (7,*)' а Ў®в Ґв Їа®Ја ¬¬ beies - ўҐа®пв®бвл© Їа®Ј®§' write (7,*) ' ¬Ґв®¤®¬ Ѓe©Ґб ' 200 write (*,*) 'ўўҐ¤ЁвҐ N ¤ҐЄ ¤л ЇаҐ¤ЁЄв®а ' read (*,*) xdek if (xdek.lt.1.or.xdek.gt.35) goto 200 7 write (*,*) 'ўўҐ¤ЁвҐ § Ў« Ј®ўаҐ¬Ґ®бвм Їа®Ј®§ ' read (*,*) m write (7,*) '§ Ў« Ј®ўаҐ¬Ґ®бвм Їа®Ј®§ ',m ydek=xdek+m if (ydek.gt.36) goto 7 ix=0 npx=0 c npx= N ЇаҐ¤ЁЄв®а x , npy- N ЇаҐ¤ЁЄв в y eof=0 kt=1 ka=0 c vibor dannix iz arxiva 10 call ardek(xdek,ydek,klet,kp,god(ka+1),x(1,kt),y(1,kt),eof) if (eof.eq.-1) goto 18 ka=ka+1 klt(ka)=klet kpar(ka)=kp if (ka.ne.1) kpar(ka)=kp+kpar(ka-1) kt=kt+kp goto 10 18 if (kpar(ka).le.200) goto 8 write (*,*) 'зЁб«® Ї а-а®ў > 200' write (*,*) ' ЌҐ®Ўе. 㢥«ЁзЁвм а §¬Ґа®бвм ¬ ббЁў ' goto 99 8 ngd=god(1) if (ka.eq.1) goto 37 m=god(1) k=m do 9 i=2,ka if (god(i).lt.m) m=god(i) if (god(i).gt.k) k=god(i) 9 continue ngd=k if (m.eq.k) goto 37 c ўла ўЁў ЁҐ аеЁў ( з «®) write (7,100) m,k,k 100 format (' аеЁўл зЁ овбп ',i4,' - ',i4,' Ј®¤ ¬Ё'/ *'ўбҐ аеЁўл ЇаЁўҐ¤Ґл Є ',i4,' Ј®¤г Ў«-Ёп') do 35 i=1,ka if (god(i).eq.k) goto 35 l=k-god(i) klet=klt(i)-l klt(i)=klet kp=1 if (i.ne.1) kp=kpar(i-1)+1 do 36 j=kp,kpar(i) do 36 m=1,klet x(m,j)=x(m+L,j) 36 y(m,j)=y(m+L,j) 35 continue write (*,*) 'ўбҐ аеЁўл ЇаЁўҐ¤Ґл Є Ј®¤г ',k 37 m=0 j=1 do 13 i=1,ka do 12 kp=j,kpar(i) m=m+1 12 n(m)=klt(i) j=kpar(i)+1 13 continue 6 write (*,*) 'ўўҐ¤ЁвҐ з «мл© N ЇаҐ¤ЁЄв в (¤«п Їа®Ј®§ )' read (*,*) hy if (hy.gt.kpar(ka)) goto 6 if (hy.lt.1) hy=1 write (*,*) 'ўўҐ¤ЁвҐ зЁб«® ЇаҐ¤ЁЄв в®ў ' read (*,*) kolp kolp=hy+kolp-1 if (kolp.gt.kpar(ka)) kolp=kpar(ka) ccc do 60 npy=1,kpar(ka) do 60 npy=hy,kolp c ўлЎ®а ЇаҐ¤ЁЄв в y mp=0 klet=n(npy) kly=klet c kly=razmernost y write (7,101) npy,ydek c** write (7,102) (y(i,npy),i=1,klet) call grad(klet,k,y(1,npy),f,3,a(1,201)) cccc call grad(klet,k,y(1,npy),f,1) pf(1)=-1. c** write (7,103) k,klet c** write (7,104) (f(i),i=1,klet) if (npy.gt.hy) goto 47 do 40 jj=1,ka klet=klt(jj) kp=kpar(jj) if (jj.ne.1) kp=kp-kpar(jj-1) do 20 L=1,kp npx=npx+1 c -ўлЎ®а ЇаҐ¤ЁЄвop x i=0 if (L.eq.1) i=2 call grad(klet,ki,x(1,npx),d(1,npx),i,a(1,npx)) mki(npx)=ki write (7,105) npx,xdek c** write (7,102) (x(i,npx),i=1,klet) c** write (7,106) ki c** write (7,104) (d(i,npx),i=1,klet) c а бзҐв ўҐа®пв®б⥩ call koefj(k,ki,klet,kly,f,d(1,npx),jxy(npx),pf,pdf(1,1,npx)) c klet-зЁб«® «Ґв, kp-зЁб«® Ї а ¬Ґва®ў 20 continue 40 continue goto 50 47 do 11 i=1,kpar(ka) npx=i klet=n(npx) ki=mki(npx) write (7,105) npx,xdek call koefj(k,ki,klet,kly,f,d(1,npx),jxy(npx),pf,pdf(1,1,npx)) 11 continue 50 l=1 do 14 i=2,npx if (jxy(l).lt.jxy(i)) l=i 14 continue mp=mp+1 lpr(mp)=l ki=mki(l) klet=n(L) kol=klet do 51 m=1,60 do 51 j=1,k 51 rp(m,j)=1.0 assign 21 to mm 25 do 16 m=1,klet i=d(m,L) s=0. do 15 j=1,k r=pdf(i,j,L)*rp(m,j) s=s+r*pf(j) h(j)=r cc if (npy.gt.1.and. cc *m.lt.3) write (7,190) l,m,j,d(m,l),pdf(i,j,L),r,rp(m,j) cc 190 format ('l,m,j,d,pdf,r=',4i5,f10.4,f13.10,f10.6) 15 continue do 17 j=1,k 17 pfx(m,j)=h(j)*pf(j)/s 16 continue c++ i=mp c++ if (i.gt.13) i=13 c++ write (7,107) l,(lpr(j),j=1,i) c++ if (i.lt.mp) write (7,108) (lpr(j),j=i+1,mp) c** do 177 m=1,klet c** 177 write (7,109) m,(pfx(m,j),j=1,k) c+ 107 format (i3,' ЇаҐ¤ЁЄвop Ё ',13i4) cc 108 format ('ўҐа®пв®бвЁ P(”j/X) ¤«п ',i2,' ЇаҐ¤ЁЄвop Ё ',10i3) c+ 108 format (20i4) 109 format (i3,9f8.4) call braer(k,klet,pfx,f,b(l),proc(L)) goto mm,(21,22) 21 do 19 m=1,klet i=d(m,L) do 19 j=1,k 19 rp(m,j)=pdf(i,j,L)*rp(m,j) assign 22 to mm br(mp)=b(l) po(mp)=proc(L) do 22 l=1,npx do 23 i=1,mp 23 if (lpr(i).eq.l) goto 22 klet=n(L) if (klet.gt.kol) klet=kol goto 25 22 continue do 24 i=1,mp 24 b(lpr(i))=-999. l=1 do 28 i=1,npx if (b(l).lt.b(i)) l=i 28 continue c+ write (7,122) l,b(l) c+ 122 format ('dp. good prediktor=',i5,' br=',f10.8) if (br(mp).gt.b(L)-0.01) goto 30 klet=n(L) if (kol.gt.klet) kol=klet cccc call koefj(k,ki,klet,kly,f,d(1,l),s1,pf,pdf) mp=mp+1 lpr(mp)=L goto 21 30 write (7,114) mp write (7,117) (lpr(j),j=1,mp) write (7,115) write (7,116) (br(j),j=1,mp) write (7,124) write (7,125) (po(j),j=1,mp) 114 format (i3,' "«гзиЁе" ЇаҐ¤ЁЄвopoў :') 115 format ('Є®нддЁжЁҐвл Ѓа ©Ґа :') 116 format (10f8.5) 117 format (20i4) 124 format ('Їа®жҐв ®Їа ў¤лў Ґ¬®бвЁ :') 125 format (10f8.2) do 26 m=1,klet s=0. do 27 j=1,k h(j)=pf(j)*rp(m,j) 27 s=s+h(j) do 29 j=1,k 29 pfx(m,j)=h(j)/s 26 continue write (7,110) write (7,111) (tire,j=1,k) write (7,112) (j,j=1,k) write (7,111) (tire,j=1,k) i=ngd do 33 m=1,klet write (7,113) i,(pfx(m,j),j=1,k) 33 i=i+1 write (7,111) (tire,j=1,k) if (npy.eq.hy) call profal(xdek,kp,gdp,xa) if (kp.eq.0) goto 60 if (kp.eq.npx) goto 31 write (*,*) 'зЁб«® аеЁў®ў ¬ «®ў в®' write (7,*) 'зЁб«® аеЁў®ў ¬ «®ў в®' kp=0 goto 60 31 do 38 i=1,mp L=lpr(i) do 32 j=1,mki(L) if (xa(L).ge.a(j,L).and.xa(L).lt.a(j+1,L)) goto 381 32 continue if (xa(L).lt.a(1,L)) goto 39 if (xa(L).gt.a(mki(L),L)) goto 43 write (*,*)'osibka v rashete' stop 39 da(i)=1 write (7,*) 'Їа®Ј®§. д ©«: Ї а-а ',L,' ¬ҐмиҐ min' goto 38 43 da(i)=mki(L) write (7,*) 'Їа®Ј®§. д ©«: Ї а-а ',L,' Ў®«миҐ max' goto 38 381 da(i)=j 38 continue s=0. do 45 j=1,k r=1. do 41 m=1,mp L=lpr(m) i=da(m) if (pdf(i,j,L).lt.0.00000001) pdf(i,j,L)=0.000001 41 r=r*pdf(i,j,L) s=s+r*pf(j) h(j)=r 45 continue do 42 j=1,k 42 pfx(1,j)=h(j)*pf(j)/s write (7,120) gdp,ydek,npy write (7,121) (pfx(1,j),j=1,k) write (7,123) k,(a(i,201),i=1,k+1) 123 FORMAT ('зЁб«® д §=',i2,'. ѓа Ёжл д §:'/8f9.2) 600 ix=1 60 continue 99 stop end subroutine grad(n,k,x,d,ixy,a) c vxod=n,x(n),ixy={0,3}={0,2-px,1,3-py} c vixod=k[kol-vo gradacii],d(n)=massiv n gradacii parameter (k5=5) dimension x(1),a(1) integer*2 d(1) character px*11/'ЇаҐ¤ЁЄв®а '/,py*11/'ЇаҐ¤ЁЄв в '/,pxy*11 pxy=px if (ixy.eq.1.or.ixy.eq.3) pxy=py xmin=x(1) xmax=xmin do 10 i=2,n if (xmin.gt.x(i)) xmin=x(i) if (xmax.lt.x(i)) xmax=x(i) 10 continue dx=xmax-xmin c+++write (*,*) 'min=',xmin,' max=',xmax,' dx=',dx if (ixy.lt.2) goto 15 write (*,*) '¤«ЁвҐ«м®бвм Ў«о¤ҐЁ©=',n 11 write (*,*) 'ўўҐ¤ЁвҐ зЁб«® Ја ¤ жЁ© ',pxy read (*,*) k if (k.gt.k5.or.k.eq.1) goto 11 15 a(1)=xmin a(k+1)=xmax+0.0001 ccccc dx=dx/k do 12 j=2,k 12 a(j)=xmin+dx*(j-1)/k cccc 12 a(j)=a(j-1)+dx if (ixy.eq.3) write (7,100) k,(a(i),i=1,k+1) 100 FORMAT ('зЁб«® д § (ЇаҐ¤ЁЄв в )=',i2,'. ѓа Ёжл д §:'/8f9.2) do 14 i=1,n do 13 j=1,k if (x(i).ge.a(j).and.x(i).lt.a(j+1)) goto 14 13 continue write (*,*)'osibka v rashete' stop 14 d(i)=j return END c read iz arxiva dannix dekad xdek,ydek subroutine ardek(xdek,ydek,klet,kp,god,x,y,iarx) dimension xb(50),x(60,50),y(60,50),mgg(60,2) integer*2 xdek,ydek,iarx,god character imy*12 do 8 i=1,60 do 8 j=1,50 x(i,j)=-10e5 8 y(i,j)=-10e5 5 FORMAT (a12) 100 format(14x,'aаеЁў ¤ ле ',a12/ *1x,'¤«ЁвҐ«м®бвм Ў«о¤ҐЁ© -',i3,' «Ґв (c ', *i4,' Ї® ',i4,' ЈЈ.)'/3x,' Ї а ¬Ґва®ў -',i2) 108 format(1x,'¬ ббЁў а бзЁв 60 «Ґв Ў«-Ё©. ', *'Ґ®Ўе 㢥«ЁзЁвм а §¬Ґа®бвм ¬ ббЁў ') c if (iarx.eq.1) close (unit=5) c iarx=0- rabota c 1 arxivom c iarx=1- rabota c 2,3.. arxivom c iarx=-1- kones arxivov write (*,*) 'ўўҐ¤ЁвҐ Ё¬п ўе®¤®Ј® д ©« (¤ . ў® ўгва. д®а¬ вҐ)' write (*,*) ' Ё«Ё Їа®ЎҐ«' read (*,5) imy iarx=-1 if (imy.eq.' ') goto 99 open(unit=5,file=imy,status='old',form='unformatted') cccccc open(unit=5,file=imy,form='unformatted') iarx=1 c з⥨Ґ ¤ ле Ё§ аеЁў read (5) n,k,klet c klet-зЁб«® «Ґв, kd-зЁб«® ¤ҐЄ ¤ if (klet.le.60) goto 9 write (7,108) stop 9 read (5) ((mgg(i,j),i=1,klet),j=1,2) kp=n-1 god=mgg(1,1) do 20 m=1,klet l=mgg(m,2) do 12 i=1,l read (5) (xb(j),j=1,n) j=xb(1) if (ydek.eq.j) goto 11 if (xdek.ne.j) goto 12 do 10 j=2,n 10 x(m,j-1)=xb(j) goto 12 11 do 13 j=2,n 13 y(m,j-1)=xb(j) 12 continue 20 continue write (7,100) imy,klet,mgg(1,1),mgg(klet,1),kp 99 return end c ўлзЁб«-ЁҐ koнд-в —гЇа®ў Ё ўҐа®пв®б⥩ p(”),p(D),p(D/”) subroutine koefj(k,ki,klet,kly,f,d,jxy,pf,pdf) dimension pd(5),pf(1),pdf(5,5) integer*2 f(1),d(1),nfj(5),m,njj(5,5),mdf(5) real*4 jxy,ndfm(5,5),ndf1 m=0 if (pf(1).ge.0.) goto 20 m=1 do 10 j=1,k nf=0 do 11 i=1,kly if (f(i).eq.j) nf=nf+1 11 continue pf(j)=nf*1.0/kly nfj(j)=nf 10 continue write (7,105) k,(pf(i),i=1,k) 20 s=0 do 13 L=1,ki nd=0 do 12 i=1,klet 12 if (d(i).eq.l) nd=nd+1 pd(l)=nd*1.0/klet 13 continue s1=0. if (klet.ne.kly) goto 17 do 15 j=1,k do 15 L=1,ki ndf=0 do 14 i=1,klet if (d(i).eq.l.and.f(i).eq.j) ndf=ndf+1 14 continue s=s+ndf njj(l,j)=ndf if (nfj(j).ne.0) goto 26 25 write (7,*) 'Ё§¬ҐЁвҐ зЁб«® д § ЇаҐ¤ЁЄв в ' write (*,*) 'Ё§¬ҐЁвҐ зЁб«® д § ЇаҐ¤ЁЄв в ' stop 26 pdf(l,j)=ndf*1.0/nfj(j) c++ ndf1=pd(L)*nfj(j) c++ ndfm(l,j)=ndf1 c++ r=ndf-ndf1 c write (7,777) l,pd(L),nfj(j),ndf,ndf1,r,s1 c++ s1=s1+r*r*1.0/ndf1 777 format (i4,f8.3,2i8,' ndf1',2f8.3,f15.8) 15 continue 16 pk=(ki-1)*(k-1) jxy=sqrt(s/sqrt(pk)) c koнд-в —гЇа®ў (ў д®а¬г«Ґ n^),t.e ..s1/..pk c++ jxy=sqrt(s1/sqrt(pk)) goto 23 c а §®Ґ зЁб«® «Ґв 17 let=klet if (kly.lt.klet) let=kly s=0. do 22 j=1,k nf=0 do 18 i=1,ki 18 mdf(i)=0 do 19 i=1,let if (f(i).ne.j) goto 19 nf=nf+1 mdf(d(i))=mdf(d(i))+1 19 continue do 21 L=1,ki s=s+mdf(L) if (nf.eq.0) goto 25 pdf(l,j)=mdf(L)*1.0/nf njj(l,j)=mdf(L) c++ ndf1=pd(L)*nf c++ ndfm(l,j)=ndf1 c++ r=mdf(L)-ndf1 б+ s1=s1+r*r*1.0/ndf1 c write (7,777) l,pd(L),nfj(j),ndf,ndf1,r,s1 21 continue 22 continue goto 16 100 FORMAT ('зЁб«® Ја ¤ жЁ©=',i1,', Є«Ё¬ вЁзҐбЄ п Ї®ўв®а塞®бвм', *' Ја ¤ жЁ© p(Di)'/3x,9f8.4) 101 FORMAT ('koнд-в —гЇа®ў =',f8.4,' p(Di/”)=') 102 format (5x,i2,7f7.4) 103 format ('nf=',5i5) 105 format ('зЁб«® д §=',i1,' , Є«Ё¬ вЁзҐбЄ п Ї®ўв®а塞®бвм ', *'Є/¦ д §л ђ(”)'/3x,9f8.4) 23 write (7,100) ki,(pd(i),i=1,ki) c++ write (7,101) jxy c++ do 24 i=1,ki c++ 24 write (7,102) i,(pdf(i,j),j=1,k) c++ if (m.eq.1) write (7,103) (nfj(j),j=1,k) cc do 27 i=1,ki cc 27 write (7,117) (ndfm(i,j),j=1,k) cc 117 format ('n^df=',5f7.1) ccc 27 write (7,117) (njj(i,j),j=1,k) cc 117 format ('njj=',5i5) return end subroutine braer(k,n,pfx,f,b,proc) dimension pfx(60,5) integer*2 f(1),p(60),nij(5,5),mf real*8 s s=0. do 10 m=1,n i=f(m) mf=1 do 11 j=1,k p2=pfx(m,j) if (i.eq.j) p2=p2-1. s=s+p2*p2 if (pfx(m,mf).lt.pfx(m,j)) mf=j 11 continue p(m)=mf 10 continue b=1.0-s/(2.0*n) c+ 100 format ('Є®нддЁжЁҐв Ѓа ©Ґа =',f10.6) c++ write (7,100) b do 12 i=1,k do 12 j=1,k 12 nij(i,j)=0 do 13 i=1,k do 13 m=1,n if (p(m).ne.i) goto 13 j=f(m) nij(i,j)=nij(i,j)+1 13 continue ns=0 s1=0. do 15 i=1,k do 15 j=1,k if (i.eq.j) ns=ns+nij(i,j) p2=nij(i,j)*1.0/n if (nij(i,j).ne.o) goto 17 ccc write (7,*) 'nij=0, i,j=',i,j goto 15 17 s1=s1+nij(i,j)*alog10(p2) 15 continue p2=ns*100.0/n proc=p2 h=s1/n c+++ write (7,101) p2,h ccc write (7,102) (p(i),i=1,n) c** do 16 i=1,k c** 16 write (7,103) (nij(i,j),j=1,k) c+ 101 format ('Їа®жҐв ®Їа ў¤лў Ґ¬®бвЁ=',f10.4/ c++ *'нва®ЇЁп ¤ ®© бЁбвҐ¬л Їа®Ј®§®ў=',f7.4) c 103 format ('nij=',5i6) return end subroutine profal(xdek,kp,god,x) c з⥨Ґ Їа®Ј®§вЁзҐбЄ®Ј® д ©« (1 Ј®¤ Ў«-Ё© Ї® ўбҐ¬ аеЁў ¬) dimension x(500) integer*2 xdek,god character imy*12 5 FORMAT (a12) kp=0 write (*,*) 'ўўҐ¤ЁвҐ Ё¬п д ©« Їа®Ј®§вЁзҐбЄЁе ¤ ле Ё«Ё Їа®ЎҐ«' cc write (*,*) ' Ё«Ё Їа®ЎҐ«' read (*,5) imy if (imy.eq.' ') goto 99 open(unit=8,file=imy,status='old') vk=-10e5 pris=9999 ka=1 ido=500 do 10 i=1,ido 10 x(i)=vk c з⥨Ґ ¤ ле Ё§ аеЁў read (8,*) x god=x(1) i=3 j=x(2) if (j.eq.xdek) goto 13 11 write (*,*) 'N ¤ҐЄ ¤л Їа®Ј®§вЁзҐбЄ®Ј® д ©« аеЁў ',ka, *' Ґ а ўҐ ',xdek write (7,*) 'N ¤ҐЄ ¤л Їа®Ј®§вЁзҐбЄ®Ј® д ©« аеЁў ',ka, *' Ґ а ўҐ ',xdek 12 kp=0 return ccc 13 do 20 i=3,ido 13 if (x(i).eq.vk) goto 99 if (x(i).gt.pris-1) goto 14 kp=kp+1 x(kp)=x(i) goto 20 c Є®Ґж Ј®¤ (Є®Ґж аеЁў ) 14 ka=ka+1 if (x(i+1).eq.vk) goto 99 j=x(i+1) if (j.eq.god) goto 15 write (*,*) '¤агЈ®© Ј®¤ г аеЁў ',ka write (7,*) '¤агЈ®© Ј®¤ г аеЁў ',ka goto 12 15 j=x(i+2) if (j.ne.xdek) goto 11 i=i+2 20 i=i+1 if (i.le.ido) goto 13 cc 20 continue cc write (7,101) (x(i),i=1,kp) cc 101 format(13f6.1) 99 return end
|
Это сообщение отредактировал(а) Cr@$h - 11.2.2009, 17:42
|