Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
Znahar90

Перевод с Fortran на С++

15.11.2012, 22:16. Показов 3736. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Проблема в следующем, никак не могу разобраться с синтаксисом Fortran. В свое время изучал С++, и то правда давно дело было. Есть код программы на Fortran, не могли бы Вы переписать ее на С++. Заранее спасибо.
Fortran
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
      implicit real*8(a-h,o-z)
      dimension rk(200),pk(200),rkt(200),td(100),ed(100),tt(200)
    1,y(200),z(200),en(100),pr1(200),pr2(200)
    data ed/0.,1.02,2.54,5.3,7.8,10.5,13.9,17.7,21.7,26.4,32.3,37.7,
     144,49,52.8,56.1,58.8,61.1,62.4,62.6,62.1,60.2,57.5,54.7,50.,44.9,
    239.8,35.2,30.4,25.4,20.4,15.7,11.9,8.95,5.9,3.27,1.5,.51,0,61*0/
14      format(6e12.4)
      open(1,file='r_v_p.dat')
      gam=1.26
      ne=38
        n=79
       ht=.5d-6
    E0=0.
    en(1)=0.
      do 125 i=1,ne+1       
        td(i)=ht*(i-1)
    ed(i)=ed(i)*1d6
    if(i.ne.1)then
    E0=E0+(ed(i)+ed(i-1))*ht*0.5
    en(i)=E0
    end if 
125     continue
        tau=td(ne+1)
    do 3 i=1,ne+1
    td(i)=td(i)/tau
    ed(i)=en(i)/E0
3   continue        
      dlk=.05            
           pi=3.14159
      c0=1460
    ro0=1d3
    R0=((gam-1)*tau*tau*E0/pi/ro0/dlk)**.25
    print *,'tau',tau,E0,R0  
        dt=.25d-6/tau
    t=dt
    rk(1)=0.725d-3
    y(1)=rk(1)/R0
    z(1)=0.
    pk(1)=ro0*R0**2/tau**2*(0.-z(1)**2*0.5)/y(1)**2+1d5
    r1=.005
    r2=0.008
      do 1 i=2,n    
    if(t.le.tau/tau)then
               do 26 j=1,ne
            if(td(j).le.t.and.t.le.td(j+1))go to 27
26        continue
27      et=ed(j)+(ed(j+1)-ed(j))/(td(j+1)-td(j))*(t-td(j))         
        else
      et=1
        end if
    etk1=et
    ak1=dt*et/y(i-1)**2/dlog(dlk/R0/y(i-1))
    am1=dt*z(i-1)/y(i-1)
    y(i)=y(i-1)+am1
    z(i)=z(i-1)+ak1
    rk(i)=y(i)*R0
    pk(i)=ro0*R0**2/tau**2*(et-z(i)**2*0.5)/y(i)**2+1d5
    x=t-r1/c0/tau
    et=0.
               do 6 j=1,ne
            if(td(j).le.x.and.x.le.td(j+1))go to 7
6        continue
7      et=ed(j)+(ed(j+1)-ed(j))/(td(j+1)-td(j))*(x-td(j))   
    pr1(i)=ro0*R0**2/tau**2*0.5*dlk/r1*et/y(i)**2/dlog(dlk/R0/y(i))
    if(pr1(i).lt.1d5)pr1(i)=1d5
    et=0.
    x=t-r2/c0/tau
               do 16 j=1,ne
            if(td(j).le.x.and.x.le.td(j+1))go to 17
16        continue
17      et=ed(j)+(ed(j+1)-ed(j))/(td(j+1)-td(j))*(x-td(j))      
    pr2(i)=ro0*R0**2/tau**2*0.5*dlk/r2*et/y(i)**2/dlog(dlk/R0/y(i))
    if(pr2(i).lt.1d5)pr2(i)=1d5
        print *,t,x,et
    t=t+dt
1     continue 
    t=0.
    dt=dt*tau
    do 2 i=1,n
    if(i.eq.1)then
    rkt(i)=(rk(2)-rk(1))/dt
    else
    if(i.eq.n)then
    rkt(i)=(rk(n)-rk(n-1))/dt
    else
    rkt(i)=(rk(i+1)-rk(i-1))/(2.*dt)
    end if 
    end if
    write(1,14)t*1d6,rk(i)*1d3,rkt(i),pk(i)*1d-6,pr1(i)*1d-6
     1,pr2(i)*1d-6
    t=t+dt
2   continue
      stop
      end
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.11.2012, 22:16
Ответы с готовыми решениями:

Перевод с Fortran на С++
Здравствуйте. Есть код программы на Fortran, не могли бы Вы переписать его на С++. удалено Задача: Минимизация (или максимизация)...

Перевод с Fortran на c/c++
Помогите, пожалуйста, перевести с Fortran на язык c/c++(что легче)заранее спасибо subroutine STEP2(x,y,pov) complex x, y,...

МКЕ (перевод Fortran -> C++)
Имеется код на фортране, нужна помощь в переводе на с++ implicit real*8 (a-h,o-z) parameter (NKU=13, NKE=20) dimension...

1
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
17.11.2012, 19:57
Fortran использует бэйсикоподобный синтаксис, он вообще интуитивно понятен. Есть конверторы с фортрана на С, помнится я таким пользовался. Там с динамически выделеными массивами помню проблема была, но у тебя я их не вижу. Советую погуглить в эту сторону.

Добавлено через 1 минуту
Таких конвертеров вообще много, например вот по первой ссылке в гугле.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.11.2012, 19:57
Помогаю со студенческими работами здесь

Перевод с Fortran на с/с++
Помогите, пожалуйста, перевести с Fortran на язык c/c++(что легче)заранее спасибо subroutine STEP2(x,y,pov) complex x, y, pov, u,...

Перевод из Fortran в Delphi
Здравствуйте. Помогите пожалуйста перевести код из фортрана в делфи. Я почти перевел, но не все получилось. Я в тексте пояснил, где-что....

Перевод с Fortran на Java
Нужна помощь с переводом на Java с Fortran. Все 3 курса учил Java program example10 include 'mpif.h' integer rank, size, ierr, N,...

перевод с fortran в паскаль
c c To make ASCII files of induction magnetometer data c reading 1-hour file and make 1-day ASCII file c (64Hz sampling...

Перевод кода с С на Fortran
Помогите перевести код: subroutine determineValueOfTheInput(t, result) character result real*8 t if (t .LE. 3.14) then result =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru