使用Fortran在Eclipse上没有控制台输出

时间:2017-04-05 22:45:58

标签: eclipse fortran fortran95

所有。我正在编写一个相对简单的程序,它遍历一个数据列表并返回学校项目的峰值。

到目前为止,这是代码:

    program Fortran_Project_1
    implicit none
    integer::cnt,cnt1, i
    integer:: peaks=5
    real, dimension(360):: time,impulse
    real, allocatable :: impulselist(:)
    integer, dimension(360)::interval
    character(len=150)::clean,header
    clean='C:\Users\User\Desktop\Fortran_Project_1\ir_clean.txt'
    print *, clean

    open (unit=1,file=clean)

    do cnt1=1,4
        read (1,*) header
    end do

    do cnt=1,443
        read(1,*) interval(cnt),time(cnt),impulse(cnt)
    end do
   print *, 'Choose amount of peaks to find'
   read *, peaks
   deallocate (impulselist)
   allocate (impulselist(peaks))
    do i = 1, cnt
        if (impulse(i)>impulse(i+1) .and. impulse(i)>impulse(i-1)) then
                peaks = peaks - 1
                impulselist(peaks) = impulse(i)
        end if
        if (peaks < 1) then
            exit
        end if
    end do
    close (1)
    print *, impulselist
end program Fortran_Project_1

无论如何,当运行此项并输入用户想要查找的峰值数量时,控制台完全空白。它会打印clean变量和查询,但这些都是。我该怎么办?

谢谢

编辑:控制台输出:

C:\用户\用户\桌面\ Fortran_Project_1 \ ir_clean.txt
选择要找到的峰值数量

[输入]

2 个答案:

答案 0 :(得分:0)

你说没有任何事情是奇怪的。你应该收到一条错误信息。

未分配数组impulselist,您正在调用deallocate(impulselist)。这是不允许的,应该由编译器诊断,它应该在代码运行时抱怨。

答案 1 :(得分:0)

我明白了。列表维度存在问题。这是完美运行的更新代码。

程序Fortran_Project_1     隐含无     整数:: CNT,CNT1,我,COUNT1,峰     真实,维度(1000)::时间,冲动     真实的,可分配的:: impulselist(:),timelist(:)     整数,维度(1000):: interval     字符(LEN = 150)::干净,头     clean ='C:\ Users \ Buraaq Alrawi \ Desktop \ Fortran_Project_1 \ ir_clean.txt'     打印*,干净     打印*,'选择要查找的峰的数量'     读*,峰值     分配(impulselist(peak))     分配(timelist(峰值))

open (unit=1,file=clean,action='read')

do cnt1=1,4
    read (1,*) header
end do

do cnt=1,501
    read(1,*) interval(cnt),time(cnt),impulse(cnt)
end do

count1=1
do i = 1, cnt
    if (impulse(i)>impulse(i+1) .and. impulse(i)>impulse(i-1)) then
            impulselist(count1) = impulse(i)
            timelist(count1) = time(i)
            count1 = count1 + 1
    end if
    if (count1 > peaks) then
        exit
    end if
end do
close (1)
100 format(A28,X,1000F10.2)
200 format(A28,X,1000F10.4)
300 format(A23,F10.2,F10.4)
write (*,100) 'The peak times are(seconds):', timelist
write (*,200) 'The peak impulse values are:', impulselist
write (*,300) 'The settled values are:',time(501),impulse(501)

结束程序Fortran_Project_1

谢谢大家