Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Перевод кода с Си подобного языка

11.05.2018, 16:51. Показов 795. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Верно ли переведен код:
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
#include < stdio.h >
#include < stdlib.h >
#define _USE_MATH_DEFINES
#include < math.h >
 
 
//*************************************************************************************************************
// аппроксимация гамма-функции в интервале от 1 до 2
// отношением полиномов 8 степени
double gammaapprox(double x){
        double p[]={-1.71618513886549492533811e+0,
                        2.47656508055759199108314e+1,
                       -3.79804256470945635097577e+2,
                        6.29331155312818442661052e+2,
                        8.66966202790413211295064e+2,
                       -3.14512729688483675254357e+4,
                       -3.61444134186911729807069e+4,
                        6.64561438202405440627855e+4};
 
        double q[]={-3.08402300119738975254353e+1,
                        3.15350626979604161529144e+2,
                       -1.01515636749021914166146e+3, 
                       -3.10777167157231109440444e+3,
                        2.25381184209801510330112e+4,
                        4.75584627752788110767815e+3,
                       -1.34659959864969306392456e+5,
                       -1.15132259675553483497211e+5};
        double z = x - 1.0;
        double a = 0.0;
        double b = 1.0;
        for(int i = 0; i<8; i++){
                a =(a+p[i])*z;
                b = b*z+q[i];
        }
        return (a/b+1.0);
}
 
 
//*************************************************************************************************************
// Гамма-функция вещественного агрумента
// возвращает значение гамма-функции аргумента z
double gamma(double z){
       if((z>0.0)&&(z<1.0))   return gamma(z+1.0)/z;        // рекурентное соотношение для 0
       if(z>2)                return (z-1)*gamma(z-1);      // рекурентное соотношение для z>2 
       if(z<=0)               return M_PI/(sin(M_PI*z)*gamma(1-z)); // рекурентное соотношение для z<=0 
       return gammaapprox(z);   // 1<=z<=2 использовать аппроксимацию
}
 
 
//*************************************************************************************************************
 
// Основная программа для рассчета значения гамма-функции вещественного аргумента
int main(){
        float z;
        printf("enter argument z: ");
        scanf(" %f",&z);
        double g = gamma((double)z);
        printf("gamma(%.2f) = %e\n", z,g);
        system("Pause");
        return 0;
}
, если получилось:
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
var
  P: array of double := (-1.71618513886549492533811e+0,
                          2.47656508055759199108314e+1,
                         -3.79804256470945635097577e+2,
                          6.29331155312818442661052e+2,
                          8.66966202790413211295064e+2,
                         -3.14512729688483675254357e+4,
                         -3.61444134186911729807069e+4,
                          6.64561438202405440627855e+4);
  
  Q: array of double := (-3.08402300119738975254353e+1,
                          3.15350626979604161529144e+2,
                         -1.01515636749021914166146e+3, 
                         -3.10777167157231109440444e+3,
                          2.25381184209801510330112e+4,
                          4.75584627752788110767815e+3,
                         -1.34659959864969306392456e+5,
                         -1.15132259675553483497211e+5);
                       
function GammaApproximation(x: double): double; 
begin
  var (z, a, b) := (x - 1.0, 0.0, 1.0);
  for var i := 0 to 7 do
    (a, b) := ((a + P[i]) * z, b * z + Q[i]);
  Result := a / b + 1.0;
end;
 
function Gamma(z: double): double;
begin
  if (z > 0) and (z < 1) then Result := Gamma(z + 1.0) / z;
  if (z > 2) then Result := (z - 1) * Gamma(z - 1);
  if (z <= 0) then Result := Pi / (Sin(Pi * z) * Gamma(1 - z));
  Result := GammaApproximation(z);
end;
 
begin
  var z := ReadlnReal();
  Writeln($'Gamma({z}) = {Gamma(z)}');
end.
?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2018, 16:51
Ответы с готовыми решениями:

Реально ли создать из кода на Фортране dll или lib, чтобы потом ее использовать из другого Си-подобного языка
Дорого времени суток! Я работаю на фортране 90. Вопрос. Реально ли создать из кода .dll или lib чтобы потом его использовать (включить)...

Перевод кода с языка C# на F#
Срочно понадобился перевод этой программы в среду F#, или хотя бы аналог по функциональности, буду очень благодарен. С функциональным...

Перевод кода программы с языка C++ на C#
Здравствуйте! Можно ли перевести этот код с С++ на С#? Понимаю, что просьба специфическая,но сам программировать на с # не умею. ...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
11.05.2018, 20:49
Чем вот такое описание массива не устроило?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  P := Arr(-1.71618513886549492533811e+0,
            2.47656508055759199108314e+1,
           -3.79804256470945635097577e+2,
            6.29331155312818442661052e+2,
            8.66966202790413211295064e+2,
           -3.14512729688483675254357e+4,
           -3.61444134186911729807069e+4,
            6.64561438202405440627855e+4);
  
  Q := Arr(-3.08402300119738975254353e+1,
            3.15350626979604161529144e+2,
           -1.01515636749021914166146e+3, 
           -3.10777167157231109440444e+3,
            2.25381184209801510330112e+4,
            4.75584627752788110767815e+3,
           -1.34659959864969306392456e+5,
           -1.15132259675553483497211e+5);
А так вроде все нормально...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2018, 20:49
Помогаю со студенческими работами здесь

Перевод кода с языка Pascal на C++
Доброго времени суток всем. Дабы не плодить темы, также отпишусь здесь: необходимо перевести код паскаля на С, С++ ил С#, любой из них. В...

Интерпретатор/компилятор ассемблер-подобного языка
Привет! Чую, что изобрёл велисипед, даже скорее велопарк, но всё же, поделюсь: Некоторое время назад начал изучать кресты, в целом...

Перевод кода c языка Pascale в язык PHP, Java and JavasScript
Всем привет!!! Я очень извиняюсь. Вот уже три дня подряд не могу перевести этот код с языка Pascale, в языки PHP и JavaScript или в Java....

Как написать редактор с подсветкой синтаксиса СИ-подобного языка?
Как написать редактор с подсветкой синтаксиса СИ-подобного языка?

Перевод с языка С++ на Си
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; #define n 10 #define m 5 int main(){ int...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru