2011-04-11 3 views
0

크기를 결정하고 정렬하는 변수를 기반으로 배열을 가져 오려고합니다.배열 정렬 및 포트란 95 옆으로 인쇄

배열은 Fortran 95의 난수 시드를 사용하여 만들어집니다. 그러나 정렬하려고하면 큰 문제가 발생합니다. 그것은 잘 컴파일하지만 배열은 그것에 별표가 많이 인쇄됩니다.

또한 배열을 옆으로 인쇄하고 싶습니다 (예 : 1 2 3 4 4 등). 그런데도 실패했습니다. DO 루프 내에서 Advance = "no"를 사용하여 수행해야한다는 것을 알고 있지만 분명히 잘못된 것입니다.

아래 코드는 제가 사용하고있는 코드입니다. 누군가 내가 잘못 생각할지도 모르는 곳에서 알려 주면 매우 감사 할 것입니다. 시간 내 줘서 고마워.

SUBROUTINE Sorter(num, numinteger) 

    INTEGER, INTENT(OUT):: num(100) 
    INTEGER, INTENT(IN):: numinteger 

    DO i=1, (numinteger-1) 
     min=num(i) 
     pos=i 
     DO j=i,numinteger 
      IF (num(j)<min)THEN 
       min=num(j) 
       pos=j 
      END IF 
     END DO 
     temp=num(i) 
     num(i)=min 
     num(pos)=temp 
    END DO 
    PRINT*, " " 
    PRINT*, "Sorted Numbers" 
    DO i=1, numinteger 
    WRITE(*,23,ADVANCE="NO") num 
    23 FORMAT (I2) 
    END DO 
    END SUBROUTINE 

감사!

답변

2

숫자 사이에는 공백이 없지만 배열을 반복하지만 인덱스는 증가하지 않습니다 ... 컴퓨터는 각 인터레이션에서 전체 배열을 인쇄하도록 요청하고 있습니다. WRITE (* 23, ADVANCE = "NO") NUM (ⅰ)

+0

는 단순히 배열로 이동할 수있는 최대 수를 명시 할 NUM (100)에서 (100)를 사용했을

는 난이 있어야한다고 생각. 사실 숫자가 2 자리 이상이되는 것을 원하지 않습니다. 그래서 내가 임의의 숫자를 만드는 방식이 잘못 되었기 때문에 그것이라고 생각합니까? – EuropaDust

+0

또한 FORMAT 문을 다음과 같이 변경하고자 할 수도 있습니다. FORMAT (I2, 1X) – Jess

+1

단순히 num 대신 num을 사용하면 큰 차이가 나고 많은 혼란을 겪습니다. 지금은 잘 작동합니다. Jess !!! – EuropaDust