Проблема с сортировкой массива и печатью сбоку в Fortran 95

Я пытаюсь взять свой массив чисел на основе переменной, которая определяет его размер, и отсортировать его.

Массив создается с использованием начального числа случайных чисел на Fortran 95. Однако, когда я пытаюсь отсортировать его, у меня возникают большие проблемы. Он компилируется нормально, но массив печатается с большим количеством звездочек.

Кроме того, я хотел напечатать свой массив сбоку (например, что-то вроде этого: 1 2 3 4 и т. д.), но мне даже это не удалось. Я понимаю, что это должно быть сделано с помощью Advance="no" в цикле DO, но, по-видимому, это тоже ошибочно.

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

    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

Спасибо!


person EuropaDust    schedule 11.04.2011    source источник


Ответы (1)


У вас нет пробелов между вашими числами, но вы также перебираете массив, но не увеличиваете индекс... вы просите компьютер печатать весь массив при каждом взаимодействии.

Я думаю, что это должно быть: WRITE(*,23,ADVANCE="NO") num(i)

person Jess    schedule 11.04.2011
comment
Я использовал 100 в num(100), чтобы просто указать максимальное число, к которому может перейти массив. На самом деле я не хочу, чтобы мои числа превышали 2 цифры. Так вы думаете, это потому, что я неправильно создаю случайные числа? - person EuropaDust; 11.04.2011
comment
Вы также можете изменить оператор FORMAT на: FORMAT(I2, 1X) - person Jess; 11.04.2011
comment
Использование num(i) вместо простого num имело огромное значение и убрало много беспорядка. Теперь он работает нормально. Большое спасибо Джесс!!! - person EuropaDust; 11.04.2011