nixp.ru v3.0

26 мая 2017,
пятница,
21:52:30 MSK

DevOps с компанией «Флант»
pandora84 написал 17 сентября 2009 года в 06:00 (1086 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 4 комментария на сайте.

будьте стольк любезны помочь с задачей на фортране…

суть вот в чем:

в функции должна быть проверка элементов трех массивов на присутствие  возростающей  последовательности чисел.

В основной программе я задаю 3 массива A(10) B(10) C(10), и должна вывести имя массива, чьи элементы являются возрастающей последовательностью.

я совсем недружу с этим оператором, задача впринципе простая, если бы ненадо было использовать функцию. как написать основную часть программы язнаю, а что должно быть в Function нет help ;9

Heavy

А какие языки программирования ты знаешь? Напиши на любом из них эту функцию и мы тебе поможем перевести её на фортран ;)

pandora84


program fg
      implicit none
      integer A(10)
      logical func
      data A/1,2,3,4,5,6,7,8,9,10/
      
      IF(func(A,10).EQ.1) THEN
      print*,'Massiv A'
      END IF
      end program
      LOGICAL FUNCTION func(mas,size)
      INTEGER I, size, mas(10)
      DO I=1, size
      IF (MAS(i).LT.MAS(i+1)) THEN
      Func=1
      ENDIF
      END

вот попытка сделать задание только для 1 массива, было 11 ошибок, свела до одной

C:\Program Files\Microsoft Visual Studio\Common\MSDEV98\My Projects\CELSIUS\CELSIUS.FOR(26) : Error: An unterminated block exists.
 DO I=1, size
Heavy

он ждёт окончания блока «DO .. ENDDO» (ENDDO у тебя нет). И цикл идти должен от 1 не до size, а до (size-1) (иначе на проверке порядка вылетишь за границу массива)

pandora84

да… столь глупую ошибку через 10 минут осознала сама, но все же спасибо ;)

Heavy

Недосмотрел чуть. Кусок

IF (MAS(i).LT.MAS(i+1)) THEN

     Func=1

ENDIF

вообще не очень рабочий, т.к. тогда массив  [10 9 8 7 6 5 4 3 1 2] он распознает как сохраняющий порядок (ведь MAS(9).LT.MAS(10) == TRUE)

pandora84

да при проверке так и было, ввела переменную ещо одну и все ;)

pandora84

можно ещо спросить

program none
      implicit none
      real x0, e, x
      print*, 'vvedite koeff tochnosti'
      read*, e
      print*, 'vvedite x0'
      read*, x0
1      x= log(x0)+3
      if (abs(x-x0) .LE. e) then
      print*, x
      else
      x0=x
      go to 1
      end if
      pause
      end

правильно ли по методу простых интерпритаций?

myst

Вырвиглаз.