Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [General] Чайник vs Фортран, дневники укратителя фортрана 
:(
    Опции темы
FortranTamer
Дата 10.12.2010, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 10.12.2010

Репутация: нет
Всего: нет



Господа, здравствуйте! Надеюсь на вашу помощь!

Предыстория: нужно освоить фортран (FPS 4.0) на нормальном уровне, на нем никогда раньше не работал. 

Описание проблемы: Клепаю простые задачки просто в целях знакомства с языком и не заморачиваясь на красоту и стройность алгоритма. Написал следующую программулину: 

      Program Optimal Path
      Real :: k, V1=6, V2=4, x=0, t, deltat=10
      write (*, 100) "first velocity, m/s ", V1
      write (*, 100) "second velocity, m/s", V2
      100 format (A, //)
      t=((x**2+3**2)**0.5)/V1+(((10-x)**2+3**2)**0.5)/V2
      k=1  
      do while (abs (deltat) > 0.000001)
        x=x+k
        deltat=t-(((x**2+3**2)**0.5)/V1+(((10-x)**2+3**2)**0.5)/V2)
        t=((x**2+3**2)**0.5)/V1+(((10-x)**2+3**2)**0.5)/V2
        write (*,*) t, "  ", x
        if (x+k>8) then 
                k=k/10
                x=7.2
        end if    
      end do
      write (*,*) x
      write (*,"(A10)") t
      read (*,*)
      end

Условие задачи премерно такое (если это окажется важным, если нет - можно просто байпасировать): есть площадка 6*10 метров. половина (3*10) залита бетоном, другая половина засыпана песком. Агрегат премещается из одного угла в диагонально противоположный. Скорость движения по бетону - 6м/с, по песку - 4м/с. Определить, через какую точку границы бетон/песок должен пройти агрегат, чтобы время прохождения оказалось минимальным. 

Вопрос: Конечно, решение корявое и не совсем корректное, но это для меня  сейчас не важно. Больше смущает представление результата Фортраном. Он выдает непонятные загагулины (см.прикрепленный файл).
Т.е. возмущение вызывают следующие моменты: 
1) почему write (*, 100)  "first velocity, m/s ", V1  - выводит irst... - первый символ потерян! А 100 format (A, //) выводит какие-то кракозябры, вместо цифирок?
2) почему арифметика сбивается на цифирках 7,5 дальше: 7,599999; 7,699999 и т.п. до конца?
3) и опять же в конце кракозябры.
4) да и как перености формулу, если она превышает установленную длину строки?

Это сообщение отредактировал(а) FortranTamer - 10.12.2010, 10:18

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  ________.jpg 83,35 Kb
PM MAIL   Вверх
FCM
Дата 10.12.2010, 13:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Цитата(FortranTamer @  10.12.2010,  09:41 Найти цитируемый пост)
Предыстория: нужно освоить фортран (FPS 4.0) на нормальном уровне

Может лучше осваивать сразу современные фортран-компиляторы?

Цитата(FortranTamer @  10.12.2010,  09:41 Найти цитируемый пост)
1) почему write (*, 100)  "first velocity, m/s ", V1  - выводит irst... - первый символ потерян! А 100 format (A, //) выводит какие-то кракозябры, вместо цифирок?

В старинных фортранах 1-ая позиция записи  не выводится - поэтому обычно формат начинали с 1X, т.е. с переходом на 2-ую позицию.
Что касается формата, то он задан неправильно, поскольку не задан дескриптор формата для REAL-числа.

Цитата(FortranTamer @  10.12.2010,  09:41 Найти цитируемый пост)
2) почему арифметика сбивается на цифирках 7,5 дальше: 7,599999; 7,699999 и т.п. до конца?

Потому что аппаратно под каждое число отводится конечное число бит (это для всех языков программирования!) => не каждое число может быть представлено точно. Обычно в расчетах пользуются точностью REAL(8), а REAL(4) это что-то вроде "бесплатного приложения".

Цитата(FortranTamer @  10.12.2010,  09:41 Найти цитируемый пост)
4) да и как перености формулу, если она превышает установленную длину строки?

Если файл с расширением .f90, то поставь & после первой части формулы.

Это сообщение отредактировал(а) FCM - 11.12.2010, 16:52
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.0730 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.