| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Fortran > [General] Чайник vs Фортран |
| Автор: FortranTamer 10.12.2010, 09:41 |
| Господа, здравствуйте! Надеюсь на вашу помощь! Предыстория: нужно освоить фортран (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) да и как перености формулу, если она превышает установленную длину строки? |