|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.07.2010, 13:03 | #1 |
Пользователь
Регистрация: 16.07.2010
Сообщений: 17
|
перевод программы из фортрана 6(девелопер студио) в бэйзик 6
Вобщем проблема такова:У меня есть программа написанная на языке фортран отлажена и работающая, но увы в фортране нельзя создать фаил .exe , зато можно в бэйсике, но этот язык я не изучал((((
Суть задачи такова: есть экспериментальные данные 31 точка значения времени и соответсвенно 31 точка значения избыточного давления в каждый момент времени, необходимо провести интерполяцию, затем решить дифференциальное уравнение второго порядка, подставив туда интерполируемые данные, затем вывести график первой и второй производной. Ну на фортране вот собственно эта прога: Function P(x,xt,yt,N) Real xt(101),yt(101) do I=1,(N-1) If (x.GE.Xt(I).and.x.LE.xt(I+1)) go to 100 enddo write(*,*) 'Значение х лежит вне таблич. знач.' stop 100 P=yt(I)+(yt(I+1)-yt(I))*(x-xt(I))/(xt(I+1)-xt(I)) return end Real*4 Xm(121),Ym(2,121) real xt(31),yt(31),x,Y(2),M,K OPEN(5,FILE='DAT.TXT') OPEN(6,FILE='RES.TXT') READ(5,1)(xt(I),yt(I),I=1,31) WRITE(6,1)(xt(I),yt(I),I=1,31) 1 FORMAT(2F10.8) V=0.00182 A=0.082 C=696 M=2.03 K=989 P0=100000 G=1.2 X=0. Y(1)=0. Y(2)=0. H=0.0000075 H1=H/100 x=0. Xm(1)=0 Ym(1,1)=0 Ym(2,1)=0 DO K1=2,121 DO I=1,100 F1=Y(2) F2=(-C/M)*Y(2)-K/M*Y(1)+A/M*(P(x,xt,yt,31)+(1-(V/(V-A **Y(1)))**G))*100000 X=X+H1 Y(1)=Y(1)+F1*H1 Y(2)=Y(2)+F2*H1 ENDDO WRITE(6,2)X,Y(1),Y(2) Xm(k1)=X Ym(1,k1)=Y(1)*100 Ym(2,k1)=Y(2) ENDDO 2 FORMAT(//2X, 'x=',E14.7,' y1=',E14.7,' y2=',E14.7) Call Graf_1_9(2,121,Xm,Ym,'t','Y','1',1) close(5) close(6) end Project1.rar В бэйзике я создал такой шаблон(собственно он и есть выше) где данные могут быть вбиты вручную либо открыты из текстового файла, как мне их перевести из текстового формата в double и зависти в массив соответствующий xt yt в фортаране. (мне надо чтобы можно было и вручную их вбивать и через открытие фаила) ДАльше я вроде разобрался немного с переводом кода, но вот с графиком опять косяк... Мне нужно построить две линии в одном графике вот так это делается в фортране Call Graf_1_9(2,121,Xm,Ym,'t','Y','1',1) А может можно создать ексзешный фаил в бэйсике но на основе фортрана что бы я не переписывал все заново...???? Помогите плиз чем можете...:confu sed: |
18.07.2010, 11:57 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,964
|
Может на Борланде? Там есть специальный компонент Chart. Очень легко строить разные графики с его помощью.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 18.07.2010 в 12:00. |
18.07.2010, 12:54 | #3 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
|
18.07.2010, 13:19 | #4 |
Пользователь
Регистрация: 16.07.2010
Сообщений: 17
|
ну фортран-язык программирования для расчетов, а вот сделать так чтоб программа работала самостоятельно, без фортрана не невозможно. Вобщем нельзя сделать так чтоб прога была отдельная, сама по себе, т.е открываешь екзешный фаил, открывается окно для ввода данных и после ввода выводит ответ, график скажем или просто результаты подсчетов. Для этого мне и нужен бэйсик, я уже вставил эту прогу в бэйсик ну и соответсвенно переделал объявления переменных, операторы, но выбивает ошибки(((( , а еще в бэйсике с графиками работать очень трудно... надо самому все писать, вот скажем в фортране график вызывается одной строкой:
Call Graf_1_9(2,121,Xm,Ym,'t','Y','1',1) 2- число линий на графике 121- это количество точек по которым необходимо построить график xm-одномерный массив размерностю n в данном случае 120 ym- двумерный массив размерностью mxn(здесь 2x120) значений ординат точек 't'подпись по оси абцисс 'Y'подпись по оси ординат '1'подпись под графиком 1 количество символов подписи под графиком есть что-нибудь подобное в бэйсике? |
18.07.2010, 14:27 | #5 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
За 22 года работы на "персоналках" впервые вижу, чтобы от Фортрана не хотели отходить, из-за того что там "легче работать с графиками"!..
... Любая разноязычная пара, обработанная компиляторами от M$ ((VC/C++, VB, Fortran, хоть Фортрана в этой троице уже и нет давно) сопрягается между собой, но нужно хорошо понимать механизм передачи параметров в/из п/п и знать соответствие типов. То есть, ежели уж Фортран в нашем случае стал "Центром Вселенной", оформляем вычислительно-рисовательную часть в виде подпрограмм и вызываем их из Бейсика, где осуществляется ввод (если не получится скомпоновать статически, тогда оформляем фортрановскую часть как dll). Но, повторяю, такая стыковка требует определённой квалификации и внимательности. Может, проще метод на Бейсике переписать и там график построить?... |
18.07.2010, 15:02 | #6 |
Пользователь
Регистрация: 16.07.2010
Сообщений: 17
|
да знаю я что фортран это уже давно отстал... но этому языку меня учили в универе и другого я не знаю(((( к великому сожалению! по этому он и стал для меня центром вселенной...
Да если бы exe фаилы можно было бы делать на нем для меня он действительно был бы центром вселеной, зачем менять его на другой язык если он делает то, что от него требуют? |
18.07.2010, 15:37 | #7 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
Я имел в виду, что я разные причины привязанности к Фортрану встречал. "Я на нём научился думать", "вылизанная за десятилетия реализация метода", "высокая степень оптимизации по быстродействию"... Но чтобы из-за графики!...
... Фортран 6 - это Compaq, бывший Digital, бывший M$? Там в папочке DF98\SAMPLES\QUICKWIN - куча примеров (на90-м Фортране, правда) виндузовых GUI-программок. Или был такой фортрановский компилятор фирмы Lahey (позднее - Lahey / Fujitsu, но и это не спасло его от смерти). К 5-й, кажется, версии шла библиотека под названием "Winteracter" - тоже для создания GUI в стиле Windows. |
20.07.2010, 12:08 | #8 |
Форумчанин
Регистрация: 15.01.2010
Сообщений: 948
|
В принципе, есть ещё один способ. Дубовый, но вполне работоспособный.
1. Фортран. 1.1 Ввод из файла DAT.TXT делается в свободном формате ( Код:
Код:
1.2. Строится Фортрановский exe-шник и помещается в какой-нибудь подкаталог, поближе к Бейсиковской программе (ну, пусть, для примера, подкаталог будет называться FORTRAN, а Фортран-программу обзовём F31.EXE ). 2. Бейсик. 2.1. Набивается bat-файл из четырёх строк: Код:
2.2. В обработчике нажатия клавиши <Расчитать> 2.2.1. Данные [пере]записываются в файл с именем DAT.TXT в тот подкаталог, где находится Фортран-программа из п.1.2 (FORTRAN в нашем примере), по 2 числа (с любым количеством десятичных знаков) в строке, разделённые хотя бы одним пробелом. 2.2.2. Выполняется оператор Код:
Последний раз редактировалось Vago; 20.07.2010 в 12:14. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перевод программы с Pascal в C++ | GoodSpirit | Помощь студентам | 4 | 19.05.2010 18:04 |
Синтаксис Фортрана | Каптюк | Помощь студентам | 2 | 15.05.2010 06:32 |
Перевод фортрана в С | varsus | Общие вопросы C/C++ | 4 | 10.01.2009 14:18 |