Fortran Coder

查看: 35265|回复: 5
打印 上一主题 下一主题

[求助] 新人代码求大佬指正Unexpected data declaration statement at

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2018-9-19 20:31:02 | 显示全部楼层
把所有定义语句放到前面即可。

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2018-9-19 20:33:55 | 显示全部楼层
忠告
1. 排版很重要,一定要做。
2. 对于代码中大量出现的同一个常数,可以定义为 Parameter,减少今后的修改量。比如你要把 2250 改成 2230,会很麻烦。

如下
[Fortran] 纯文本查看 复制代码
program up
  implicit none
  Integer , parameter :: N = 2250 , S = 4
  real :: x(N),y(N),z(N)
  integer :: i , j , k , l
  integer :: a(S)
  integer :: m(N,S)
  !read the file......................................
  open(1,file='XYZ1.txt')
  do i = 1,N
    read(1,*) x(i),y(i),z(i)
  end do
  close(1)
  !........draw a ball and get 4 points..............................................
  do j = 1,N
    k = 0
    do i = 1,N
      if (j == i) cycle
      if ((x(i)-x(j))**2+(y(i)-y(j))**2+(z(i)-z(j))**2 < 1.8**2) then
        k = k + 1
        a(k) = i
        if (k == 4) then
          do l = 1,S
            m(j,l) = a(l)
            print *,m(j,l)
          end do
        end if
      end if
    end do
  end do
end program up

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2018-9-19 21:48:06 | 显示全部楼层
程序负荷这个问题可以忽略不计。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-18 18:11

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表