Форум программистов, компьютерный форум CyberForum.ru

Из Fortran в C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Распараллеливание арифметических выражений http://www.cyberforum.ru/cpp-beginners/thread882351.html
Здравствуйте. Есть задача - распараллелить вычисление арифмитического выражения, подобное виду (a+b)+(c+(d+e+f))+h т.е. арифмитическая операция одна - сложение, присутствуют скобки. Вопрос в том, как это реализовать? Есть мысль, что для начала исходное выражение необходимо привести к обратной польской записи (в постфиксную форму). Реализация этого вроде бы есть здесь. А что делать...
C++ метод Эйткена-Стеффенсона добрый день,помогите,пожалуйста ,разобраться где ошибка в коде,он должен давать ответ ОТВЕТ: x=1.171229 на интервале #include "stdafx.h" #include <iostream> #include <conio.h> #include <math.h> #include <stdio.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread882346.html
Организовать производный класс, содержащий функции вычисления сложения и вычитания дробей, исходники есть C++
проблема в нехватке опыта в программировании, программу с быделением целой части из дроби я слобал. #include <iostream> #include <math.h> #include <stdio.h> class fractNum { public: fractNum( int = 5, int = 3 ); ~fractNum() {};
C++ нахождение максимального числа dev C++
дана строка char с произвольными данными, например "21,5 10,3 12 74" (пробелов может быть несколько). Нужно найти максимальное число. Если нужно переводить из char в float массив, то подскажите как.
C++ Сформировать динамический массив строк; удалить из него строку с заданным номером http://www.cyberforum.ru/cpp-beginners/thread882307.html
Сформировать динамический массив строк. Удалить из него строку с заданным номером. Добавлено через 1 час 15 минут UP!!!
C++ Написать программу подсчета числа вершин в бинарном дереве Помогите пожалуйста с этой задачей : Написать программу подсчета числа вершин в бинарном дереве. подробнее

Показать сообщение отдельно
ZveRb34
5 / 5 / 0
Регистрация: 23.11.2011
Сообщений: 81
28.05.2013, 18:29     Из Fortran в C++
Здравствуйте, есть программа написанная на 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
program wave002
! Расчет полей в брэгговском изотропном планарном волноводе
!
integer(4)::n_2pi   !сколько длин волн укладывается по толщине d в вакууме
!
real(8)::eps1,eps3,tet0(901),htet0,rrs(901),rrp(901),pi,x(1001)
complex(8)::eps2(1001),p0,pn,q0,qn,mju,ns(2,2),np(2,2),rs(901),rp(901),Ey(901,1001),Hz(901,1001)
complex(8)::ic,k0d,p(1001),q(1001),alfa(901),alfa2,Hy(901,1001),Ez(901,1001),eps21,eps22,sum
real(8)::rEy(901,1001),rHy(901,1001),tet_R,fi_s(901),fi_p(901)
real(8)::del_12s(901),del_23s(901),del_12p(901),del_23p(901),k0ds,k0dp,d_k0d,delta_s(901,1001),delta_p(901,1001)
logical(4)::il
 
open(1,file='Ey.dat',form='formatted')
open(2,file='Hy.dat',form='formatted')
open(3,file='dis_s.dat',form='formatted')
open(4,file='dis_p.dat',form='formatted')
pi=3.1415926
n_2pi=5
k0d=n_2pi*2.*pi
d_k0d=k0d/10.
eps1=1.1
eps21=3.
eps22=4.
eps3=1.1
miu=1.
tet_R=dasin(dsqrt(min(eps1,eps3)/dreal(eps21)))
htet0=(pi/2.-tet_R)/900.
h_x=k0d/1000.
 
ic=dcmplx(0.,1)
 
do i=1,901
tet0(i)=tet_R+dfloat(i-1)*htet0
alfa2=eps21*dsin(tet0(i))**2
alfa(i)=cdsqrt(alfa2)
p0=cdsqrt(eps1*miu-alfa2)
q0=p0/eps1
 
 
 
 
!для m=0
 
 
Ey(i,1)=1.*dcos(del_12s(i))
Hz(i,1)=ic*dsin(del_12s(i))*p0
 
Hy(i,1)=1.*dcos(del_12p(i))
Ez(i,1)=-ic*dsin(del_12p(i))*q0
sum=0.
!неоднородность
do l=1,1001
x(l)=dfloat(l-1)*h_x
if(int(x(l)/d_k0d)/2*2.eq.int(x(l)/d_k0d)) then
il=.true.
else
il=.false.
endif
if(il) then
eps2(l)=eps21
else
eps2(l)=eps22
endif
enddo
 
del_12s(i)=-datan(dreal(cdsqrt((alfa2-eps1*miu)/(eps2(1)*miu-alfa2))))
del_23s(i)=-datan(dreal(cdsqrt((alfa2-eps3*miu)/(eps2(1001)*miu-alfa2))))
del_12p(i)=-datan(dreal(eps21*miu/eps1*miu*cdsqrt((alfa2-eps1*miu)/(eps21*miu-alfa2))))
del_23p(i)=-datan(dreal(eps22*miu/eps3*miu*cdsqrt((alfa2-eps3*miu)/(eps22*miu-alfa2))))
 
fi_s(i)=del_12s(i)+del_23s(i)
fi_p(i)=del_12p(i)+del_23p(i)
 
do l=1,1001
 
p(l)=cdsqrt(eps2(l)*miu-alfa2)/miu
q(l)=cdsqrt(eps2(l)*miu-alfa2)/eps2(l)
sum=sum+p(l)*h_x
ns(1,1)=cdcos(sum)
ns(1,2)=ic*cdsin(sum)/p(l)
ns(2,1)=ic*cdsin(sum)*p(l)
ns(2,2)=cdcos(sum)
 
Ey(i,l)=ns(1,1)*Ey(i,1)+ns(1,2)*Hz(i,1)
Hz(i,l)=ns(2,1)*Ey(i,1)+ns(2,2)*Hz(i,1)
 
np(1,1)=cdcos(sum)
np(1,2)=-ic*cdsin(sum)/q(l)
np(2,1)=-ic*cdsin(sum)*q(l)
np(2,2)=cdcos(sum)
 
Hy(i,l)=np(1,1)*Hy(i,1)+np(1,2)*Ez(i,1)
Ez(i,l)=np(2,1)*Hy(i,1)+np(2,2)*Ez(i,1)
delta_s(i,l)=sum+fi_s(i)-4*pi
delta_p(i,l)=sum+fi_p(i)-4*pi
enddo
enddo
 
do i=1,901
do l=1,1001
rEy(i,l)=dreal(Ey(i,l))
rHy(i,l)=cdabs(Hy(i,l))
enddo
enddo
 
do i=1,900
do l=1,1001
if(l.gt.1.and.i.gt.1) then
 
if((delta_s(i,l)*delta_s(i,l-1).lt.0.).or.(delta_s(i,l)*delta_s(i-1,l).lt.0.)) then
 
write(1,1111) x(l),alfa(i)
1111 format(2X,E15.7,4X,2E15.7)
endif
 
 
if((delta_p(i,l)*delta_p(i,l-1).lt.0.).or.(delta_p(i,l)*delta_p(i-1,l).lt.0.)) then
write(2,2222) x(l),alfa(i)
2222 format(2X,E15.7,4X,2E15.7)
endif
endif
enddo
enddo
 
end program wave002
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru