Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.11.2021
Сообщений: 21

переписать код с c++ на pascal или python

27.05.2022, 18:07. Показов 531. Ответов 3

Студворк — интернет-сервис помощи студентам
Прошу помочь и переписать код

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
#include <cassert>
#include <cmath>
#include <vector>
#include <algorithm>
#include <limits>
#include <iostream>
 
struct Point { int x, y; };
 
double distance(const Point &p1, const Point &p2)
{
  Point delta = { p2.x - p1.x, p2.y - p1.y };
  return std::sqrt((double) delta.x * delta.x + (double) delta.y * delta.y);
}
 
static std::vector<std::vector<double>> s_solutions;
 
double MWT(const Point poly[], unsigned n, unsigned i, unsigned j)
{
  assert(i < j && j < n);
 
  if (j == i + 1)
    // Исходное ребро - возвращаем вес 0
    return 0;
 
  if (s_solutions[i][j] >= 0)
    // Такую подзадачу мы уже решали - возвращаем готовое решение
    return s_solutions[i][j];
 
  // Такую подзадачу мы еще не решали - решаем ее полностью
 
  // Вес диагонали
  double weight_ij = i > 0 || j < n - 1 ? distance(poly[i], poly[j]) : 0;
  // Не забываем, что диагональ [0, n - 1] - это исходное ребро и ее вес равен 0
 
  double min_weight = std::numeric_limits<double>::max();
  for (unsigned k = i + 1; k < j; ++k)
  {
    double weight = MWT(poly, n, i, k) + MWT(poly, n, k, j);
    min_weight = std::min(min_weight, weight);
  }
 
  // Решение нашей подзадачи
  double weight = weight_ij + min_weight;
  
  // Запоминаем решение на будущее
  s_solutions[i][j] = weight;
 
  return weight;
}
 
double MWT(const Point poly[], unsigned n)
{
  return MWT(poly, n, 0, n - 1);
}
 
int main()
{
  Point poly[] = { { 0, 0 }, { 5, -50 }, {20, -50}, { 200, 0 }, { 5, 50 } };
  unsigned n = sizeof poly / sizeof *poly;
 
  s_solutions.resize(n);
  for (auto &s : s_solutions) s.resize(n, -1);
 
  std::cout << MWT(poly, n) << std::endl;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2022, 18:07
Ответы с готовыми решениями:

Переписать код с Pascal на Python
var x1,x2,y1,y2 : integer; begin read(x1,y1,x2,y2); if x1 &lt; x2 then writeln(x1, ' ', y2, ' ',x2,' ',y1) else writeln(x2, ' ',...

Переписать код с Pascal на Python
Помогите пожалуйста, вот сам код const nas = 1000000; var b, b1, bz, z, f: integer; begin b := 3; b1 := 3; z := 2; for...

Надо переписать код с Pascal на Python 3
var b,i:longint; c:integer; function sm(n:longint):longint; begin if n&lt;10 then sm:=n else...

3
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
27.05.2022, 20:00
Что уже переписали? Какие возникли затруднения? Что не получается?
0
0 / 0 / 0
Регистрация: 20.11.2021
Сообщений: 21
28.05.2022, 15:23  [ТС]
Я не знаю этот язык, а нормальных конверторов кода я не нашел
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.05.2022, 19:41
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
type
  TPoint = record
    x, y: Integer;
  end;
 
function Distance(const p1, p2: TPoint): Real;
begin
  Distance:=SqRt(Sqr(p2.x-p1.x)+Sqr(p2.y-p1.y));
end;
 
var s_solutions: array of array of Real;
 
function MWT(const poly: array of TPoint; n, i, j: Integer): Real;
const MaxReal=3.4e38;
var
  k: Integer;
  weight, weight_ij, min_weight: Real;
begin
{$IFDEF DEBUG}
  if not ((i<j) and (j<n)) then begin
    WriteLn('Assertion failed'); Halt;
  end;
{$ENDIF}
  if j=i+1 then
    MWT:=0                 { Исходное ребро - возвращаем вес 0 }
  else if s_solutions[i,j]>=0 then
    MWT:=s_solutions[i,j]  { Такую подзадачу мы уже решали - возвращаем готовое решение }
  else begin               { Такую подзадачу мы еще не решали - решаем ее полностью }
    { Вес диагонали }
    if (i>0) or (j<n-1) then
      weight_ij:=distance(poly[i],poly[j])
    else
      weight_ij:=0;
    { Не забываем, что диагональ [0, n-1] - это исходное ребро и ее вес равен 0 }
    min_weight:=MaxReal;
    for k:=i+1 to j-1 do begin
      weight:=MWT(poly,n,i,k)+MWT(poly,n,k,j);
      if min_weight>weight then
        min_weight:=weight;
    end;
    weight:=weight_ij+min_weight;  { Решение нашей подзадачи }
    s_solutions[i,j]:=weight;      { Запоминаем решение на будущее }
    MWT:=weight;
  end;
end;
 
const
  n=5;
  poly: array [0..n-1] of TPoint = (
    (x:0; y:0), (x:5; y:-50), (x:20; y:-50), (x:200; y:0), (x:5; y: 50));
var i, j: Integer;
begin
  SetLength(s_solutions,n,n);
  for i:=n-1 downto 0 do for j:=n-1 downto 0 do s_solutions[i,j]:=-1;
  WriteLn(MWT(poly,n,0,n-1));
end.
Добавлено через 1 час 21 минуту
Ну и динамический массив тут ни к чему:
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
type
  TPoint = record
    x, y: Integer;
  end;
 
function Distance(const p1, p2: TPoint): Real;
begin
  Distance:=SqRt(Sqr(p2.x-p1.x)+Sqr(p2.y-p1.y));
end;
 
const n=5;
var s_solutions: array [0..n-1,0..n-1] of Real;
 
function MWT(const poly: array of TPoint; n, i, j: Integer): Real;
const MaxReal=3.4e38;
var
  k: Integer;
  weight, weight_ij, min_weight: Real;
begin
{$IFDEF DEBUG}
  if not ((i<j) and (j<n)) then begin
    WriteLn('Assertion failed'); Halt;
  end;
{$ENDIF}
  if j=i+1 then
    MWT:=0                 { Исходное ребро - возвращаем вес 0 }
  else if s_solutions[i,j]>=0 then
    MWT:=s_solutions[i,j]  { Такую подзадачу мы уже решали - возвращаем готовое решение }
  else begin               { Такую подзадачу мы еще не решали - решаем ее полностью }
    { Вес диагонали }
    if (i>0) or (j<n-1) then
      weight_ij:=distance(poly[i],poly[j])
    else
      weight_ij:=0;
    { Не забываем, что диагональ [0, n-1] - это исходное ребро и ее вес равен 0 }
    min_weight:=MaxReal;
    for k:=i+1 to j-1 do begin
      weight:=MWT(poly,n,i,k)+MWT(poly,n,k,j);
      if min_weight>weight then
        min_weight:=weight;
    end;
    weight:=weight_ij+min_weight;  { Решение нашей подзадачи }
    s_solutions[i,j]:=weight;      { Запоминаем решение на будущее }
    MWT:=weight;
  end;
end;
 
const
  poly: array [0..n-1] of TPoint = (
    (x:0; y:0), (x:5; y:-50), (x:20; y:-50), (x:200; y:0), (x:5; y: 50));
var i, j: Integer;
begin
  for i:=n-1 downto 0 do for j:=n-1 downto 0 do s_solutions[i,j]:=-1;
  WriteLn(MWT(poly,n,0,n-1));
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2022, 19:41
Помогаю со студенческими работами здесь

Переписать код с python на с# или с++
Здравствуйте, у меня есть код программы на Python, который нужно переписать на с# или с++, может кто-нибудь помочь с этим ? with...

Перевести код из Pascal в Python или C++
Здравствуйте, есть программа, её нужно перевести из языка Pascal в Python или C++ var arr2: array of int64; arr3: array of...

Переписать код из Turbo Pascal в Pascal ABC
Переписать код из Turbo Pascal в Pascal ABCprogram zadacha; uses crt, graph; const m=150; var gd,gm,i,j,s1,s2,c1,c2: integer; z,x,y:...

Переписать код из Turbo Pascal в Pascal ABC
Переписать код из Turbo Pascal в pascal ABCprogram zadacha; uses crt, graph; const m=50; var gd,gm,i,j,s1,s2,c1,c2: integer; z,x,y:...

Переписать код из Turbo Pascal в pascal ABC
очень плохо знаю Turbo Pascal, а времени на изучение нет, а его надо переписать в Pascal ABC, буду очень благодарна!) program Kr_D; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
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, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru