2017-05-22 13 views
1

루프의 비교적 일반적인 유형을 작성하는 더 간결한 방법이 있나요, 인덱스의 정의로 이동하지 않고상대적으로 일반적인 루프를 작성하는보다 간결한 방법을 찾고 계십니까? 인덱스 <em>M</em>에서에

70 M=NTOC-N 
    L=0 
    DO 100 I=M,NTOC 
    L=L+1 
    X(L)=XI(I) 
100 Y(L)=YI(I) 

, 그것을 복사합니다 배열 XI의 내용은 그것이 무엇이며, YI NTOC 배열 X, Y 인덱스 1 ~ ... (NTOC-M) ... 몇 개가 필요합니까?

일부 오래된 코드를 재구성하는 동안 나는이 종류의 루프가 많다는 것을 알았지 만 그 당시에는 더 잘 알지 못했지만 궁금해하고있었습니다. 은 이제 더 간결한 작성 방법입니다. 이 코드 가독성/가독성을 보완하기 위해? 루프에 많이 의존하는 반면 요즘에는 모든 종류의 배열 작업을 지원하는 Fortran이 있으므로 어떤 사람이 읽을 수있는 방법을 알고 있다면 모든 제안에 대해 매우 감사 할 것입니다. 가정 n

+4

에 의해 삭제 할 수 있습니다'X (1 : N + 1) = xi (ntoc-n : ntoc)'? – francescalus

+0

@francescalus - 정확 하 게. 매우 감사. 답으로 답장하면 받아 들일 것입니다. – Rook

답변

2

루프 i 걸쳐 값을 얻어, 긍정적 m, m+1, ..., ntoc 그렇게 선택된 xi의 요소는, 주문, xi(m), xi(m+1), ... xi(ntoc)인치 yi의 요소는 유사합니다.

어레이 섹션의 측면에서, xi(m:ntoc)은 동일한 요소 선택을 나타냅니다.

마찬가지로, 왼쪽에 x의 요소 x(1), x(2)이, ..., x(ntoc-m+1) (= x(n+1)). 배열 섹션 인 x(1:n+1)은 같은 요소를 나타냅니다.

x(1:n+1)=xi(ntoc-n:ntoc) ! Replacing m with its value 
y(1:n+1)=yi(ntoc-n:ntoc) 

을 그리고 경계가 x을하고 y1n+1, 또는 배열이 할당 가능한 경우, 다음 전체 배열 xy가 왼쪽 측면에서 사용될 수있다 : 의미

.

n 0 또는 음수의 경우 배열 섹션은 루프와 동일한 요소 (하나 또는 모두 없음)를 안전하게 선택합니다.

당신은 다음 물론 수동으로 사람들을 설정해야 할 것이다 (그리고 i이 값 ntoc+1를 취할 것을 잊었하지 않는다) 그 단편 외부 il를 사용하려고하는 경우. 당신이 더 많은 인센티브가 루프를 제거하려는 경우

마지막으로, : 비 블록이 같은 구조는 당신은 같은 의미 포트란 2015