Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2010, 13:03   #1
Kracozebr
Пользователь
 
Регистрация: 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:
Kracozebr вне форума Ответить с цитированием
Старый 18.07.2010, 11:57   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Может на Борланде? Там есть специальный компонент Chart. Очень легко строить разные графики с его помощью.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 18.07.2010 в 12:00.
Smitt&Wesson вне форума Ответить с цитированием
Старый 18.07.2010, 12:54   #3
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от Kracozebr Посмотреть сообщение
...увы в фортране нельзя создать фаил .exe
Не совсем понял... Как это "нельзя"?!..
Vago вне форума Ответить с цитированием
Старый 18.07.2010, 13:19   #4
Kracozebr
Пользователь
 
Регистрация: 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 количество символов подписи под графиком
есть что-нибудь подобное в бэйсике?
Kracozebr вне форума Ответить с цитированием
Старый 18.07.2010, 14:27   #5
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

За 22 года работы на "персоналках" впервые вижу, чтобы от Фортрана не хотели отходить, из-за того что там "легче работать с графиками"!..
...
Любая разноязычная пара, обработанная компиляторами от M$ ((VC/C++, VB, Fortran, хоть Фортрана в этой троице уже и нет давно) сопрягается между собой, но нужно хорошо понимать механизм передачи параметров в/из п/п и знать соответствие типов. То есть, ежели уж Фортран в нашем случае стал "Центром Вселенной", оформляем вычислительно-рисовательную часть в виде подпрограмм и вызываем их из Бейсика, где осуществляется ввод (если не получится скомпоновать статически, тогда оформляем фортрановскую часть как dll). Но, повторяю, такая стыковка требует определённой квалификации и внимательности. Может, проще метод на Бейсике переписать и там график построить?...
Vago вне форума Ответить с цитированием
Старый 18.07.2010, 15:02   #6
Kracozebr
Пользователь
 
Регистрация: 16.07.2010
Сообщений: 17
По умолчанию

да знаю я что фортран это уже давно отстал... но этому языку меня учили в универе и другого я не знаю(((( к великому сожалению! по этому он и стал для меня центром вселенной...
Да если бы exe фаилы можно было бы делать на нем для меня он действительно был бы центром вселеной, зачем менять его на другой язык если он делает то, что от него требуют?
Kracozebr вне форума Ответить с цитированием
Старый 18.07.2010, 15:37   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Я имел в виду, что я разные причины привязанности к Фортрану встречал. "Я на нём научился думать", "вылизанная за десятилетия реализация метода", "высокая степень оптимизации по быстродействию"... Но чтобы из-за графики!...
...
Фортран 6 - это Compaq, бывший Digital, бывший M$? Там в папочке DF98\SAMPLES\QUICKWIN - куча примеров (на90-м Фортране, правда) виндузовых GUI-программок. Или был такой фортрановский компилятор фирмы Lahey (позднее - Lahey / Fujitsu, но и это не спасло его от смерти). К 5-й, кажется, версии шла библиотека под названием "Winteracter" - тоже для создания GUI в стиле Windows.
Vago вне форума Ответить с цитированием
Старый 20.07.2010, 12:08   #8
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

В принципе, есть ещё один способ. Дубовый, но вполне работоспособный.

1. Фортран.

1.1 Ввод из файла DAT.TXT делается в свободном формате (
Код:
      READ(5,1) (xt(I),yt(I),I=1,31)
меняется на
Код:
      READ(5,*) (xt(I),yt(I),I=1,31)
).
1.2. Строится Фортрановский exe-шник и помещается в какой-нибудь подкаталог, поближе к Бейсиковской программе (ну, пусть, для примера, подкаталог будет называться FORTRAN, а Фортран-программу обзовём F31.EXE ).


2. Бейсик.

2.1. Набивается bat-файл из четырёх строк:
Код:
cd ./FORTRAN 
F31
pause
cd ..
и помещается в каталог Бейсик-программы (например, с именем CALLF31.BAT ).

2.2. В обработчике нажатия клавиши <Расчитать>
2.2.1. Данные [пере]записываются в файл с именем DAT.TXT в тот подкаталог, где находится Фортран-программа из п.1.2 (FORTRAN в нашем примере), по 2 числа (с любым количеством десятичных знаков) в строке, разделённые хотя бы одним пробелом.
2.2.2. Выполняется оператор
Код:
Shell( "CALLF31.BAT" )
(для VB6 было так, для других - надо проверить).

Последний раз редактировалось Vago; 20.07.2010 в 12:14.
Vago вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод программы с Pascal в C++ GoodSpirit Помощь студентам 4 19.05.2010 18:04
Синтаксис Фортрана Каптюк Помощь студентам 2 15.05.2010 06:32
Перевод фортрана в С varsus Общие вопросы C/C++ 4 10.01.2009 14:18