0

サイズを決定する変数に基づいて数値の配列を取得し、並べ替えようとしています。

配列は、Fortran 95の乱数シードを使用して作成されます。ただし、並べ替えようとすると、大きな問題が発生します。正常にコンパイルされますが、配列には多くのアスタリスクが含まれています。

さらに、配列を横向きに印刷したかったのですが(たとえば、1 2 3 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

ありがとう!

4

1 に答える 1

2

数値の間にスペースはありませんが、配列をループしていますが、インデックスはインクリメントしていません...各相互作用で配列全体を印刷するようにコンピューターに要求しています。

これは次のようになります:WRITE(*、23、ADVANCE = "NO")num(i)

于 2011-04-11T04:35:39.207 に答える