Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MS24
11 / 11 / 1
Регистрация: 22.02.2012
Сообщений: 115
Завершенные тесты: 1
#1

Перевод с паскаля на си - C++

06.12.2012, 21:09. Просмотров 791. Ответов 7

Ребят помогите поджалуйста с переводом!
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
const r=10;
      n=100;
type mas=array[0..r] of byte;
var i,j,a:integer;
p,f,x0,x1,x2,x3,sm,sd:real;
u:array[1..10] of byte;
d:mas;
x:array[1..100] of real;
function ff(xf0,xf1,xf2,af:real) :real;
    var
    rez:real;
      begin
      rez:=abs(sin(af*xf0+xf1-xf0*xf2));
      ff:=rez;
      end;
procedure dz (rp:integer;xp:array [1..n]of real; var dp:mas);
var
kp,ip:integer;
begin
for kp:=0 to rp-1 do
begin
dp[kp]:=0;
write(kp/rp:0:3,'--',(kp+1)/rp);
for ip:=1 to n do
if (x[ip]>=kp/rp) and (x[ip]<(kp+1)/rp) then dp[kp]:=dp[kp]+1;
writeln(d[kp]:3);
end;
end;
 
 
 
 
begin
 
 
 
for a:=0 to 1 do
 
 
begin
x0:=0.025;x1:=0.211;x2:=0.714;
 
for j:=1 to n do
begin
     f:=ff(x0,x1,x2,a);
     for i:=10 downto 1 do
         begin
              f:=f*2;
              u[i]:=trunc(f);
              f:=f-u[i];
         end;
     p:=1;
     x[j]:=0;
     for i:=1 to 10 do
      begin
       p:=p/2;
        x[j]:=x[j]+u[i]*p;
      end;
      x0:=x1;x1:=x2;x2:=x[j];
end;
 
 
dz(r,x,d);
 
 
sm:=0;sd:=0;
for i:=0 to r-1 do
sm:=sm+(2*i+1)/2/r*d[i]/n;
for i:=0 to r-1 do
sd:=sd+sqr((2*i+1)/2/r-sm)*d[i]/n;
writeln('a=',a,' M=',sm,' D=',sd);
writeln;
end;//for a
end.
Замучался совсем! Я синтаксис знаю, но некоторые моменты во мне вызывают ужас.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 21:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод с паскаля на си (C++):

Перевод из паскаля в с++ - C++
Помогите перевести type matrix = array of integer; var a:matrix; i,j,k:integer; begin k:=0; for i :=1 to...

Перевод с Паскаля на си++ - C++
Помогите перевести на си++. uses crt; const gl=; var s:string; i:byte; begin clrscr; writeln('Введите текст из...

Перевод с паскаля на с++ - C++
program z1; var i,j,m,k,z,x,l:integer; begin readln(m); for i:=0 to m do begin z:=1; if i=0 then z:=1 else begin x:=i; ...

Перевод с паскаля на С++ - C++
Даны два массива A и B одинакового размера N. Сформировать новый массив C того же размера, каждый элемент которого равен максимальному из...

перевод с паскаля на С++ - C++
Дан массив ненулевых целых чисел размера N. Проверить, образуют ли его элементы геометрическую прогрессию (см. задание 4). Если образуют,...

Перевод с Паскаля на C++ - C++
Здравствуйте. Помогите,пожалуйста,перевести код на С++. var z,x,v: text; st: string; begin ...

7
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
06.12.2012, 21:22 #2
Собственно, что программа должна делать?
0
MS24
11 / 11 / 1
Регистрация: 22.02.2012
Сообщений: 115
Завершенные тесты: 1
06.12.2012, 21:49  [ТС] #3
Эта программа для оценки псевдослучайной последовательности, алгоритм приведенный здесь 100% верный, проверяли уже, просто я плохо знаю паскаль, а с си более менее знаком.
0
BumerangSP
06.12.2012, 22:03
  #4

Не по теме:

MS24, Си или C++ ?

0
MS24
11 / 11 / 1
Регистрация: 22.02.2012
Сообщений: 115
Завершенные тесты: 1
06.12.2012, 22:05  [ТС] #5
Цитата Сообщение от BumerangSP Посмотреть сообщение
MS24, Си или C++ ?
С++ скорее всего, или можно на чистом си?
0
BumerangSP
06.12.2012, 22:14
  #6

Не по теме:

MS24, я лишь хотел узнать, в тот ли раздел Вы написали)

0
MS24
11 / 11 / 1
Регистрация: 22.02.2012
Сообщений: 115
Завершенные тесты: 1
07.12.2012, 11:21  [ТС] #7
=) А переписать не поможете? Просто вот процедура dz, я так понимаю мне нужно написать функцию, которая принимает указатель на массив d и меняет его значения? Или мне класс создавать mas в котором будет один объект - массив d и менять значения его элементов?

Добавлено через 13 часов 2 минуты
C++
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
#include <stdio.h>
#include <cmath>
#include <iostream>
 
#define sqr(x) x*x
 
const int r=  10;
const int n = 100;
//----------------------------
char array [r];
//----------------------------
char d [r];
char dp [r];
char u [10];
//----------------------------
float x [100];
//----------------------------
int i,j,a;
//----------------------------
float p,f,x0,x1,x2,x3,sm,sd;
//----------------------------
 
float ff (float xf0,float xf1,float xf2,float af)
{
 float rez;
 rez = std::abs(sin(af*xf0+xf1-xf0*xf2));
 return rez;
}
 
void dz(int rp, char* xp, char* dp)
{
    for(int kp = 0; kp <= rp - 1; kp++)
    {
      d[i] = 0;
 
        for(int ip = 1; ip <= n; ip++)
        {
            if((xp[ip] >= kp/rp) && (xp[ip] < (kp + 1) / rp))
            {
                    dp[kp] = dp[i]+1;
            }
        }  
    }
}
 
int main()
{
    for(int a = 0; a <= 1; a++)
    {
        x0 = 0.025;
        x1 = 0.211;
        x2 = 0.714;
        
        for(int j = 0; j <= 99; j++) 
        {
             f = ff(x0, x1, x2, a);
             for(int i = 9; i >= 0; i--)
                 {
                      f = f * 2;
                      u[i] = std::floor(f);
                      f = f - u[i];
                 }
             p = 1;
             x[j] = 0;
             for(int i = 0; i <= 9; i++)
              {
                 p = p / 2;
                 x[j] = x[j] +u [i] * p;
              }
           x0 = x1;
           x1 = x2;
           x2 = x[j];
        }
        
        dz(r, (char*)x, d);
        
        sm = 0; sd = 0;
        
        for(int i = 0; i <= r - 1; i++)
        {
            sm = sm + (2 * i + 1) / 2 / r * d[i] /n;
        }
        
        sm = (sm + (2 * i + 1) / 2 / r * d[i] /n);
        
        for(int i = 0; i <= r - 1; i++)
        {
            sd = sd + sqr((2 * i + 1) / 2 / r - sm) * d[i] / n;
        }
        
        printf("a = %d M = %d D = %d \n", a, sm, sd);
      }
          
    std::cin.get();      
    return 0;
}
Вот то что у меня получилось, но почему-то значения не те, подскажите?
0
Памирыч
07.12.2012, 19:36     Перевод с паскаля на си
  #8
 Комментарий модератора 
Закрыто по причине кросспостинга
http://www.cyberforum.ru/freelance/thread723061.html
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2012, 19:36
Привет! Вот еще темы с ответами:

Перевод из Паскаля в C++ - C++
Переведите программу из Паскаля в С++, пожалусйта Вот код : const nmax=100; var a: array of integer; i,j,n,m,min:...

Перевод с Паскаля на С++ - C++
Не могу ни как перевести полностью вот этот кусок кода на Паскале на си++ function h(var key: TKey): integer; {Вычисление хеш-функции} ...

Перевод из Паскаля в С++ - C++
const RusLit = ; EngLit = ; var Str: string; procedure StringClear(var Str: string); var ResStr: string; i:...

Перевод с Паскаля в С++ - C++
Помогите перевести этот код на С++ var a,z,x,x0,x1,xk,y,y0,y1,yk,zmin,h:real; i,n:integer; begin clrscr; write(‘Ввод X0:’); ...


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

Или воспользуйтесь поиском по форуму:
8
07.12.2012, 19:36
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru