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

Перевод кода из Турбо паскаля в С++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вызов функции. http://www.cyberforum.ru/cpp-beginners/thread98750.html
Здрасти, у меня есть функция вычесления суммы цифр числа int sum_digit(int x) { int sum=0; while (x!=0){ sum=sum+(x%10); x=x/10; } return sum; }
C++ Найти элемент с заданым условием Последовательность ( на рисунке) образована по правилу аi = 1 / i. Дано вещественное число ε: 0 < ε < 0,1. Найти такое аi, чтобы |аi - ai-1 |< ε. ai - это а итое,ai-1 - это а (итое-1) на языке С Люди, плз, помогите..:wall::help: http://www.cyberforum.ru/cpp-beginners/thread98728.html
Распечатать четверки чисел C++
Люди, помогите, очень нужна помощь...:help: на языке С Дано натуральное число N>19. Распечатать четвёрки простых чисел, не превосходящих N, принадлежащих одному десятку. Например, для числа 112 надо напечатать четвёрки:
C++ ХЭШ таблицы на С++
Всем привет, кто-нить знает что-нибудь по вот такой задаче (цитирую условие): "Реализовать и протестировать конкретный класс динамической структуры данных, содержащий строки. Класс должен содержать интерфейс АТД для добавления, удаления и поиска элементов, а так же содержать: 1. перегруженный конструктор 2. диструктор 3.перегружаемые операции 4. обьявление и реализация дружественных...
C++ Сортировка http://www.cyberforum.ru/cpp-beginners/thread98720.html
Есть вот такая сортировочка (индексы l и r - границы сортировки): template <typename array, typename index> void sort_insertion_up(array * a, index l, index r) { index i = 0; for(i = r; i > l; i--) if(a > a) std::swap(a, a); for(i = l + 2; i <= r; i++) {
C++ ХЭШ ТАБЛИЦЫ НА С++ всем привет, кто-нить знает что-нибудь по вот такой задаче (цитирую условие): "Реализовать и протестировать конкретный класс динамической структуры данных, содержащий строки. Класс должен содержать интерфейс АТД для добавления, удаления и поиска элементов, а так же содержать: 1. перегруженный конструктор 2. диструктор 3.перегружаемые операции 4. обьявление и реализация дружественных... подробнее

Показать сообщение отдельно
ПростоЯ
184 / 101 / 1
Регистрация: 30.05.2009
Сообщений: 746

Перевод кода из Турбо паскаля в С++ - C++

24.02.2010, 21:04. Просмотров 1729. Ответов 10
Метки (Все метки)

Помогите перевести код из турбо Паскаля в С++
Pascal
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
{$N+}
{ Вычисление интегpала десятиточечным методом Гаусса }
uses crt,graph; 
var aaa,bbb,kkk: real; 
{константы десятиточечного метода Гаусса}
const
g10c1=0.9739065285/6. 2012983932; 
g10c2=0.8650633667/6. 2012983932; 
g10c3=0.6794095683/6. 2012983932; 
g10c4=0.4333953941/6. 2012983932; 
g10c5=0.1488743390/6. 2012983932; 
g10x1=0.0666713443/6. 2012983932; 
g10x2=0.1494513492/6. 2012983932; 
g10x3=0.2190863625/6. 2012983932; 
g10x4=0.2692667193/6. 2012983932; 
g10x5=0.2955242247/6. 2012983932; 
function F(x: real): real; {интегрируемая функция}
begin
F: = kkk*(exp(-aaa*x) - exp(-bbb*x)); 
end; 
function gauss_calc(a,b: real): real; {сам десятиточечный метод Гаусса}
var n,m,s,s1,s2,s3,s4,s5: real; 
begin
m: =(b+a) /2; n: =(b-a) /2; 
s1: =g10c1*(f(m+n*g10x1) +f(m-n*g10x1)); 
s2: =g10c2*(f(m+n*g10x2) +f(m-n*g10x2)); 
s3: =g10c3*(f(m+n*g10x3) +f(m-n*g10x3)); 
s4: =g10c4*(f(m+n*g10x4) +f(m-n*g10x4)); 
s5: =g10c5*(f(m+n*g10x5) +f(m-n*g10x5)); 
s: =s1+s2+s3+s4+s5; 
gauss_calc: =s*(b-a); 
end; 
{рекурсивная ф-ция подсчета с заданной точностью}
{ gc - ранее посчитаный интеграл на интервале (a,b) }
function gauss(a,b,eps,gc: real): real; 
var t,ga,gb: real; 
begin
t: =(a+b) /2; {разбиваем интервал на две половинки}
ga: =gauss_calc(a,t); {в каждой половинке считаем интеграл}
gb: =gauss_calc(t,b); 
if abs(ga+gb-gc) >eps then {проверяем точность вычислений}
begin
ga: =gauss(a,t,eps/2,ga); {рекурсия для первой половинки}
gb: =gauss(t,b,eps/2,gb); {рекурсия для второй половинки}
end; {при этом точность повышаем, чтобы }
{при сложении ошибка не накапливалась}
gauss: =ga+gb; {интеграл = сумме интегралов половинок}
end; 
procedure inputnum(prm: string; var num: real; lb,ub: real); {процедура ввода данных}
var q: boolean; 
begin
repeat
write('Введите ',prm,' '); readln(num); 
q: =(lb>=num) or (num>ub); 
if q then writeln('Число должно быть от ', lb: 0: 0,' до ',ub: 0: 0); 
until not q; 
end; 
procedure titul; {Вывод титульного листа}
var f: text; s: string; 
i: integer; 
begin
clrscr; 
assign(f,'f42. txt'); 
reset(f); 
while not eof(f) do begin
readln(f,s); 
while length(s) <79 do s: =' '+s+' '; 
writeln(s); 
end; 
close(f); 
end; 
function main_menu: integer; {Главное меню}
var i: integer; 
begin
Writeln('=========================================================='); 
Writeln('Что будем делать? '); 
Writeln('----------------------------------------------------------'); 
Writeln('0 - выход'); 
Writeln('1 - решать тестовый пример a=1,5 b=6 k=10 eps = 0.0001'); 
Writeln('2 - решать пример с произвольными a, b, k, eps'); 
Writeln('----------------------------------------------------------'); 
Write('Выбор >>> '); readln(i); 
Writeln('=========================================================='); 
main_menu: =i; 
end; 
procedure outputgraph(a,b,a1,b1: real; n: integer); {Вывод графика}
var i,j,j1,k: integer; t,y1,y2,x1,x2,x,y: double; s: string; 
begin
clearviewport; 
x1: =a1-1; x2: =b1+1; 
if x1<0.5 then x1: =-0.5; 
y2: =f(ln(bbb/aaa) /(bbb-aaa)) *1.2; 
y1: =-y2; 
{Линия y=0}
setcolor(15); 
y: =0; 
j: =trunc(480*(y-y2) /(y1-y2)); 
line(0,j,639,j); 
{Линии x=a,x=b}
setcolor(5); 
j: =trunc(480*(-y2) /(y1-y2)); 
i: =trunc(640*(a-x1) /(x2-x1)); 
j1: =trunc(480*(f(a) - y2) /(y1-y2)); 
line(i,j, i,j1); 
i: =trunc(640*(b-x1) /(x2-x1)); 
j: =trunc(480*(-y2) /(y1-y2)); 
j1: =trunc(480*(f(b) - y2) /(y1-y2)); 
line(i,j, i,j1); 
{Сам график}
setcolor(14); 
setlinestyle(0,0,3); 
t: =(b-a) /n; 
k: =0; 
j1: =trunc(480*(-y2) /(y1-y2)); 
for i: =0 to 640 do begin
x: =(x2-x1) *i/640+x1; 
y: =f(x); 
j: =trunc(480*(y-y2) /(y1-y2)); 
if j>479 then j: =479; 
if j<0 then j: =0; 
setcolor(14); 
setlinestyle(0,0,3); 
if i=0 then moveto(i,j) else lineto(i,j); 
setcolor(8); 
if (x>t*k+a) then begin
k: =k+1; 
setcolor(15); 
end; 
setlinestyle(0,0,1); 
if (x>=a) and (x<=b) then line(i,j, i,j1); 
end; 
setcolor(15); 
y: =f(b); 
i: =trunc(640*(b-x1) /(x2-x1)); 
j: =trunc(480*(y-y2) /(y1-y2)); 
line(i,j, i,j1); 
setlinestyle(0,0,1); 
setcolor(12); 
{Подписи}
setcolor(13); 
str(a: 6: 6,s); 
s: ='a='+s; 
i: =trunc(640*(a-x1) /(x2-x1)); 
outtextxy(i,j1+2,s); 
str(b: 6: 6,s); 
s: ='b='+s; 
i: =trunc(640*(b-x1) /(x2-x1)); 
outtextxy(i-10,j1+2,s); 
setcolor(15); 
y: =0; 
j: =trunc(480*(y-y2) /(y1-y2)); 
outtextxy(5,j+3,'y=0'); 
{Ждем... }
readkey; 
end; 
procedure equateit(a,b: real; eps: real); {процедура подсчета значения интеграла и вывода графика на экран}
var integral: real; i,j: integer; 
begin
Integral: =gauss(a,b,eps,gauss_calc(a,b)); 
writeln('Интеграл = ', integral: 0: 6); 
readkey; 
i: =vga; j: =vgahi; 
initgraph(i,j,'. . \bgi'); 
outputgraph(a,(b+a) /3,a,b,1); 
outputgraph((b+a) /3,2*(b+a) /3,a,b,1); 
outputgraph(2*(b+a) /3,b,a,b,1); 
closegraph; 
end; 
var sel: integer; 
eps: real; 
begin
titul; 
Writeln('=========================================================='); 
readkey; 
repeat
clrscr; 
sel: =main_menu; 
case sel of
1: begin
aaa: =1.5; bbb: =6; kkk: =10; 
eps: =1e-4; 
equateit(aaa,bbb,eps); 
end; 
2: begin
inputnum('a',aaa,0,1000); 
inputnum('b',bbb,-1000,1000); 
inputnum('k',kkk,-1000,1000); 
inputnum('точность',eps,0.000000001,1); 
equateit(aaa,bbb,eps); 
end; 
end; 
until sel=0; 
end.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru