2016-12-21 5 views
-1

Я написал это, но когда я пытаюсь построить * .exe сказать:ошибка FOR3309: Неопределенная метка 124

Compiling Fortran... 
C:\Users\LORD\Desktop\TText1.f90 
C:\Users\LORD\Desktop\TText1.f90(197): error FOR3309: undefined label 124 
Error executing fl32.exe. 

Это исходный код проекта:

 program one 

real::x(6),f(6),deltaf1(6),deltaf2(6),deltaf3(6),deltaf4(6),deltaf5(6) 

real::gradf1(6),gradf2(6),gradf3(6),gradf4(6),gradf5(6) 

real::h,x1,x2,s1,s2,p1,p2,Y1,Y2 

real::Z,T,a,b,c,d 

open(unit=16,file="E:\N\xi.txt") 

open(unit=148,file="E:\N\fi.txt") 

    gradf1(:)=0.0 
    gradf2(:)=0.0 
    gradf3(:)=0.0 
    gradf4(:)=0.0 
    gradf5(:)=0.0 

    deltaf1(:)=0.0 
    deltaf2(:)=0.0 
    deltaf3(:)=0.0 
    deltaf4(:)=0.0 
    deltaf5(:)=0.0 


do i=0,5 

read(16,*)x(i) 

read(148,*)f(i) 

write(*,12)x(i),f(i) 

12 format(2F12.4) 

end do 

do i=0,4 

deltaf1(i)=f(i+1)-f(i) 


end do 

    do i=0,3 

    deltaf2(i)=deltaf1(i+1)-deltaf1(i) 

    end do 

    do i=0,2 

     deltaf3(i)=deltaf2(i+1)-deltaf2(i) 


    end do 

    do i=0,1 

     deltaf4(i)=deltaf3(i+1)-deltaf3(i) 

     write(*,*)deltaf4(i) 


     end do 

      deltaf5(5)=deltaf4(1)-deltaf4(0) 

      write(*,*)deltaf5(5) 

      do i=1,5 

      gradf1(i)=f(i)-f(i-1) 


      write(*,55)gradf1(i) 

      55 format(F12.4) 

      end do 

    do i=2,5 

    gradf2(i)=gradf1(i)-gradf1(i-1) 

    write(*,65)gradf2(i) 

    65 format(F12.4) 

    end do 

    do i=3,5 

    gradf3(i)=gradf2(i)-gradf2(i-1) 

    end do 


    do i=4,5 

    gradf4(i)=gradf3(i)-gradf3(i-1) 

    write(*,124)gradf4(i) 

    end do 


    gradf5(5)=gradf4(5)-gradf4(4) 

    write(*,155)gradf5(5) 

    155 format(F12.4) 


      h=x(1)-x(0) 

      x1=0.5 

      s1=(x1-x(0))/h 





      write(*,33)s1 

      33 format(F12.4) 

!p(x)=fi(0)+s*deltafi1(0)+(1/2)*s*(s-1)*deltafi2(0)+(1/6)*s*(s-1)*(s-2)*deltafi3(0)+(1/24)*s*(s-1)*(s-2)*(s-3)*deltafi4(0)+(1/120)*s*(s-1)*(s-2)*(s-3)*(s-4)*deltafi5(0) 

p1=f(0)+s1*deltaf1(0)+(1/2)*s1*(s1-1)*deltaf2(0)+(1/6)*s1*(s1-1)*(s1-2)*deltaf3(0)+(1/24)*s1*(s1-1)*(s1-2)*(s1-3)*deltaf4(0)+(1/120)*s1*(s1-1)*(s1-2)*(s1-3)*(s1-4)*deltaf5(0) 


    write(*,*)" vaghti x1=0.5 chand jomleie pishro barabar ast ba=",p1 

    x2=0.45 

    s2=(x2-x(0))/h 

    p2=f(0)+s2*deltaf1(0)+(1/2)*s2*(s2-1)*deltaf2(0)+(1/6)*s2*(s2-1)*(s2-2)*deltaf3(0)+(1/24)*s2*(s2-1)*(s2-2)*(s2-3)*deltaf4(0)+(1/120)*s2*(s2-1)*(s2-2)*(s2-3)*(s2-4)*deltaf5(0) 

write(*,*)"vaghti x2=0.45 chand jomleie pishro barabar ast ba=",p2 

    !Y(x)=fi(5)+s*gradfi1(5)+(1/2)*s*(s+1)*gradfi2(5)+(1/6)*s*(s+1)*(s+2)*gradfi3(5)+(1/24)*s*(s+1)*(s+2)*(s+3)*gradfi4(5)+(1/120)*s*(s+1)*(s+2)*(s+3)*(s+4)*gradfi5(5) 



    Y1=f(5)+s1*gradf1(5)+(1/2)*s1*(s1+1)*gradf2(5)+(1/6)*s1*(s1+1)*(s1+2)*gradf3(5)+(1/24)*s1*(s1+1)*(s1+2)*(s1+3)*gradf4(5)+(1/120)*s1*(s1+1)*(s1+2)*(s1+3)*(s1+4)*gradf5(5) 

    write(*,*)"vaghti x1=0.5 chand jomleie pishro barabar ast ba=",Y1 

    Y2=f(5)+s2*gradf1(5)+(1/2)*s2*(s2+1)*gradf2(5)+(1/6)*s2*(s2+1)*(s2+2)*gradf3(5)+(1/24)*s2*(s2+1)*(s2+2)*(s2+3)*gradf4(5)+(1/120)*s2*(s2+1)*(s2+2)*(s2+3)*(s2+4)*gradf5(5) 

    write(*,*)"vaghti x2=0.45 chand jomleie pasro barabar ast ba=",Y2 

    T=abs(p1-Y1) 

    Z=abs(p2-Y2) 

    write(*,*)"tafazole chand jomleie pishro va pasro baraye x1=0.5 barabar ast ba=",T 

    write(*,*)"tafazole chand jomleie pishro va pasro baraye x2=0.45 barabar ast ba=",Z 

    ! tabe W ra be in shekl benvis=exp(2*x) 

    !W=exp(2*x) 

    W1=exp(2*x1) 

    W2=exp(2*x2) 


    a=abs(p1-W1) 

    b=abs(p2-W2) 

    c=abs(Y1-W1) 

    d=abs(Y2-W2) 


    write(*,*)"tafazole chand jomleie pishro va tabe W mord nazar dr noghte x1=0.5 mishavad=",a 


    write(*,*)"tafazole chand jomleie pishro va tabe W mord nazar dr noghte x2=0.45 mishavad=",b 


    write(*,*)"tafazole chand jomleie pasro va tabe W mord nazar dr noghte x1=0.5 mishavad=",c 


    write(*,*)"tafazole chand jomleie pasro va tabe W mord nazar dr noghte x2=0.45 mishavad=",d 

stop 
end program one 
+1

Ваш код очень трудно читать. Если ваш университет также изучит ваш стиль кодирования, обязательно отформатируйте свой код в лучшем виде. Например, ваш отступ очень несовместим и не показывает структуру кода. –

ответ

1

Я мог бы сказать, что проблема заключается в том, что вы используете Microsoft Fortran PowerStation, которая была прекращена в 1997 году, но ...

у вас есть строка:

write(*,124)gradf4(i) 

Этот номер должен быть ярлыком формата, но у вас нет формата с надписью 124. У вас есть формат, обозначенный 12 - возможно, это то, что нужно.

Вот что современный компилятор может сказать вам:

t.f90(105): error #6052: This label has not been defined as a FORMAT label. [124] 
    write(*,124)gradf4(i) 
------------^ 
+0

Теперь, что я должен делать? – Logan

+0

Проще всего заменить 124 в этом заявлении на 155, так как это ярлык подходящего формата, который у вас уже есть. Неправильная практика заключается в том, чтобы повторить один и тот же формат с разными ярлыками, и на самом деле помеченные форматы не считаются лучшей практикой. Вместо этого используются литералы, такие как «(F12.4)», но для более сложных форматов или тех, на которые есть ссылки, обозначенные форматы в порядке. –

+0

спасибо за руководство. Я заменил программу и сделал. Но когда я запустил * .exe, на секунду покажут белый экран и спрячусь. – Logan

 Смежные вопросы

  • Нет связанных вопросов^_^