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

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

15.11.2012, 22:16. Показов 3708. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru