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

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

Восстановить пароль Регистрация
 
MS24
11 / 11 / 1
Регистрация: 22.02.2012
Сообщений: 115
Завершенные тесты: 1
06.12.2012, 21:09     Перевод с паскаля на си #1
Ребят помогите поджалуйста с переводом!
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.
Замучался совсем! Я синтаксис знаю, но некоторые моменты во мне вызывают ужас.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 21:09     Перевод с паскаля на си
Посмотрите здесь:

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

Не по теме:

MS24, Си или C++ ?

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

Не по теме:

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

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;
}
Вот то что у меня получилось, но почему-то значения не те, подскажите?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2012, 19:36     Перевод с паскаля на си
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Памирыч
07.12.2012, 19:36     Перевод с паскаля на си
  #8
 Комментарий модератора 
Закрыто по причине кросспостинга
http://www.cyberforum.ru/freelance/thread723061.html
Yandex
Объявления
07.12.2012, 19:36     Перевод с паскаля на си
Закрытая тема Создать тему

Метки
паскаля, перевод
Опции темы

Текущее время: 03:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru