게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
제가 짠 포트란 코드인데 대체 어디서 에러가 나는 걸까요?
게시물ID : programmer_16696짧은주소 복사하기
작성자 : 밝은달사랑
추천 : 0
조회수 : 552회
댓글수 : 1개
등록시간 : 2016/04/14 04:59:18
IED에서는 딱히 에러는 없고 행렬값이 너무 크다? 이런 값만 보여주는데
최종적으로 컴파일에서는 에러가 뜨는데 대체 어디를 잘못한걸까요??

      program mxmnd
      real odata(nmax), maxdata(nmax), mindata(nmax), h(nmax),
     +     sum, h1, h2, h3, h4
      integer nmax, max, index(nmax), imx, t
      parameter (max=70000)

      open(11, file='eta.txt')
      open(22, file='solve.txt')

      do i=1,max
        odata(i)=0
      enddo

%eta 데이터가 65000개 정도 되는데 그걸 읽어서 odata에 저장하고 데이터수를 nmax에 저장
     
      do i=1,max
        read(11,*) odata(i)
        
        if(odata(i).NE.0) then
         nmax=i
        endif
        
      enddo

%odata가 0보다 크거나 작으면 그 데이터 위치를 index에 저장하고 index수를 imx에 저장

        imx=0

      do i=1,nmax
        
        if(odata(i).LT.0 .and. odata(i+1).GT.0) then
            index(i)=i
            imx=imx+1
        endif
      
      enddo

%index 사이 데이터 중 최대 최소 값을 읽어서 차를 h에 저장

      do i=1,imx
        
        do n=index(i),index(i+1)-1,1
            k=odata(n)
            k2=odata(n+1)
            
            if(k.GT.k2) then
                maxdata(i)=k
                mindata(i)=k2
            else
                maxdata(i)=k2
                mindata(i)=k
            endif
            
        enddo       
            
            h(i)=maxdata(i)-mindata(i)
            
      enddo  
     
%h값을 내림차순 정렬

      do i=2,imx
        temp=h(i)

        do n=i-1,1,-1
            if(h(n).le.temp) then
                h(n+1)=h(n)
                h(n)=temp
            endif
            
        enddo
      
      enddo
     
% 유의파고, 1/10파고, 평균파고, 최대파고 계산

      t=int(imx/3)
      sum=0
      
      do i=1,t
        sum=sum+h(i)
      enddo
      
          h1=sum/t

      t=int(imx/10)
      sum=0
      
      do i=1,t
        sum=sum+h(i)
      enddo
      
          h2=sum/t

      sum=0
      
      do i=1,imx
        sum=sum+h(i)
      enddo
      
          h3=sum/imx
          
      do i=1,imx
        if(h(i).GT.h(i+1)) then
            h4=h(i)
        elseif(h(i).le.h(i+1)) then
            h4=h(i+1)
        endif
      enddo          

% 출력

      write(22,*) h1, h2, h3, h4
        
      Stop
      End
출처 나자신...
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호