我在哪里将Open FIle指标放在程序中?

时间:2016-08-21 22:30:41

标签: fortran

现在,这模拟了一个三维随机游走,并将其调整为有50个粒子。它没有在系统中运行,所以我只是想知道它有什么问题。有人有任何线索吗?

program RW3D

    implicit none

    open (1, file = ‘sarathi.txt’)

    integer, parameter : : n = 50
    integer : : x(50), y(50), z(50)
    integer : : i, j
    real : : P

    x = 0
    y = 0
    z = 0

    do i = 1, 100
    do j = 1, 50
       call random_number (p)

        write (1,*) i, x, y, z

         if (p .lt. 1.0/6) then
            x(j) = x(j) - 1
         else if (p .lt. 2.0/6) then
            y(j) = y(j) - 1
         else if (p .lt. 3.0/6) then
            z(j) = z(j) - 1
         else if (p .lt. 4.0/6) then
            x(j) = x(j) + 1
         else if (p .lt. 5.0/6) then
            y(j) = y(j) + 1
         else
            z(j) = z(j) + 1
        end if

    end do

end program RW3D

2 个答案:

答案 0 :(得分:2)

“这是我的代码,它不起作用,请修复它”在这里看起来并不是很好,正如你可以从你的分数中看到的。

“它没有运行”非常模糊。更好的描述是:

“无法编译并显示错误消息:

RW3D.f90:7.12:

    integer, parameter : : n = 50
            1
Error: Invalid character in name at (1)

我做错了什么?“

您的代码有很多问题:

  1. 声明块(所有open (1, file = ‘sarathi.txt’)integer声明)之前的可执行语句(real)已完成。

  2. 文件名未使用正确的'"打开 - 可能您的文本编辑器已将更好看的单引号替换为不行。

  3. 两个冒号之间不应有空格。

  4. 每个do循环都需要自己的end do

  5. 请不要使用小于10的文件i / o单元号。这就是要求麻烦。更好的是,使用newunit关键字:

  6. 以下是newunit

    的示例
    program hello
        implicit none
        integer :: my_unit
        open(newunit=my_unit, file='delme.txt', action='write')
        write(my_unit, *) "Hello World"
        close(my_unit)
    end program hello
    

    试试这些,你应该更进一步。

答案 1 :(得分:1)

OPEN语句不能在声明之前。在最后一次声明后移动它。

还要注意: :,它应该是::

正如评论中所述,缺少end do