Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Другие темы раздела
PascalABC.NET Определить, сколько в заданной матрице повторяющихся элементов https://www.cyberforum.ru/ pascalabc-net/ thread1762505.html
Сколько в заданной матрице, состоящей из него элементов 0 - 9, повторяющихся элементов. И какие они.
Не работает ExcelLibrary PascalABC.NET
Всем привет! Нагуглил, что на C# используют ExcelLibrary.dll (мол, быстрее и установленного Excel не требует). Я скачал и подключил ее в своей программе через код: {$reference 'ExcelLibrary.dll'}...
PascalABC.NET Найти сумму 2 наибольших значений в массиве
Ищу сумму 2 наибольших значений в массиве введенном с клавы(z). Надо чтобы а и б не были взяты с одного z, но при этом они могут быть равны.а и б - четные. вот фрагмент с проги. ...
PascalABC.NET Перестановка местами указаных столбцов в массиве Нужно переставить указаные столбцы местами в двухмерном масиве. Делал аналогичную задачу на перестановку рядков, все вышло, а со столбцами что то не работает. Где собственно ошибка? program name5;... https://www.cyberforum.ru/ pascalabc-net/ thread1762049.html
PascalABC.NET Вычисление суммы элементов массива меньших нуля https://www.cyberforum.ru/ pascalabc-net/ thread1761983.html
Где здесь ошибка? program name4; var x:array of integer; i,k:integer; begin writeln ('Введите 13 элементов массива:'); for i:=1 to 13 do read (x);
PascalABC.NET Нахождение цикла нечётной длины в ориентированном графе
Построить алгоритм нахождения цикла нечётной длины в ориентированном графе.
Убедиться, что эйлеров путь возможен в связанном графе PascalABC.NET
Эйлеровым путем называется путь в графе, проходящий по каждому ребру графа ровно один раз. Составить программу, которая проверяет утверждение, что такой путь возможен в связном графе, если все...
PascalABC.NET Найти количество треугольников, все вершины которого принадлежат заданному множеству Оцените эффективность и правильность программы. Использовалась формула для вычисления сочетаний. На плоскости задано множество точек с целочисленными координатами, никакие две из которых не... https://www.cyberforum.ru/ pascalabc-net/ thread1761906.html
PascalABC.NET Найдите удельные веса и названия всех полупроводников https://www.cyberforum.ru/ pascalabc-net/ thread1761899.html
Народ, помогите с задачей на типизированные файлы - Дан файл f, содержащий сведения о веществах: указывается название вещества, его удельный вес и проводимость (проводник, полупроводник,...
PascalABC.NET Описать процедуру (функцию) проверки разложения натурального числа в сумму двух квадратов Описать процедуру(функцию) проверки разложения натурального числа в сумму двох квадратов. Составить программу, которая выбирает из массива только те числа, которые можно разложить в сумму двох... https://www.cyberforum.ru/ pascalabc-net/ thread1761636.html
Модератор
63330 / 47043 / 32426
Регистрация: 18.05.2008
Сообщений: 114,028
18.06.2016, 19:01 0

Перевести код программы с Turbo Pascal в PascalABC

18.06.2016, 19:01. Просмотров 527. Ответов 3
Метки (Все метки)

Ответ

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
Uses GraphABC;
 
const MaxShar=10;
type shar = class
  { переменные }
  x,y:integer; { текущие координаты шара }
  r:word;      { радиус }
  dx,dy:integer; { скорость. задается значениями
                    перемещения на каждом шаге (в точках) }
  hits:set of byte; { множество шаров с которыми данный шар уже
  столкнулся и с которыми не надо обсчитывать столкновение еще раз }
  { методы }
  procedure initShar(x0,y0:integer; r0:word; dx0,dy0:integer);
  procedure Move; { двигаем }
  procedure Show; { показываем }
  procedure CheckBorder; { проверяем на выход за границы экрана }
  procedure CheckHit(k:byte); { проверяем на столкновение с другим шаром }
  procedure revertXDirection; { поменять Х/Y-составляющую скорости }
  procedure revertYDirection; { на противоположную }
  procedure TurnAfterHit(k:byte); { вычислить новые значения 
               скорости двух шаров после удара. Первый шар - шар 
               данного объекта, второй - с индексом k в массиве }
  function Value:real; { вычислить объем шара. Нужно для вычисления
       скорости. Вообще-то там масса нужна, но учитывая, что плотность
       все-равно сократиться при делении, используем объем }
  end;
var i:byte;
    shars: array[1..MaxShar] of shar; { массив шаров }
Procedure shar.Move;
  begin
  x:=x+dx;
  y:=y+dy;
  end;
Procedure shar.Show;
  begin
  setpenColor(clBlue);
  circle(x, y, r);
  end;
procedure shar.revertXDirection;
  begin
  dx:=-dx;
  x:=x+dx;
  end;
procedure shar.revertYDirection;
  begin
  dy:=-dy;
  y:=y+dy;
  end;
procedure shar.initShar(x0, y0 :integer; r0 :word; dx0, dy0 :integer);
  begin
  x:=x0;
  y:=y0;
  r:=r0;
  dx:=dx0;
  dy:=dy0;
  hits:=[];
  end;
procedure shar.CheckBorder;
  begin
  if (r+x>=windowwidth-1) or (x-r<=1) then revertXDirection;
  if (y+r>=windowheight-1) or (y-r<=1) then revertYDirection
  end;
procedure shar.TurnAfterHit(k:byte);
{ формулы для движения шаров взяты здесь:
  [url]http://ferro.phys.msu.ru/prak/PDF/01-mechanics/07.pdf[/url] }
var m1, m2 :real;
    vx10,vy10,vx20,vy20:integer;
  begin
  m1 := Value;            { массы }
  m2 := shars[k].Value;
  vx10 := dx;             { начальные значения скоростей }
  vy10 := dy;
  vx20 := shars[k].dx;
  vy20 := shars[k].dy;
  { скорость первого шара после удара }
  dx := round((2*m2*vx20 + (m1-m2)*vx10)/(m1+m2));
  dy := round((2*m2*vy20 + (m1-m2)*vy10)/(m1+m2));
  { скорость второго шара после удара }
  shars[k].dx := round((2*m1*vx10 + (m2-m1)*vx20)/(m1+m2));
  shars[k].dy := round((2*m1*vy10 + (m2-m1)*vy20)/(m1+m2));
  end;
function shar.Value:real;
  begin { возвращает объем шара }
  Value:=4*Pi*r*r*r/3;
  end;
procedure shar.CheckHit(k:byte);
var i1:byte;
    dist:longint;
begin
for i1:=1 to MaxShar do if ((i1<>k) and not(k in hits)) then
 begin
  shars[i1].hits:=shars[i1].hits+[k];
  dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y)));
  if (dist<r+shars[i1].r) then
   begin
    TurnAfterHit(i1);
    CheckBorder;
    Move;
    shars[i1].CheckBorder;
    shars[i1].Move;
    { скорость задается значениеми dx и dy - шагами движения. Таким
      образом она дискретна. Момент столкновения определяется по
      расстоянию между шарами. Но запросто может случиться, что шары
      на каком-то шаге пересекутся и в этом случае необходимо их
      развести в разные стороны перед тем как высчитывать расстояние на
      следуещем шаге, иначе они могут пребывать в состоянии постоянного
      столкновения }
    dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y)));
    while (dist<r+shars[i1].r) do
     begin
      CheckBorder;
      Move;
      shars[i1].CheckBorder;
      shars[i1].Move;
      dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y)));
     end;
    end;
  end;
end;
 
 
begin
{ инициализация шаров случайным образом }
for i:=1 to MaxShar do
 begin
  shars[i]:=shar.Create;
  shars[i].r:=20+random(10);
  shars[i].initShar(1+shars[i].r+random(windowwidth-2*shars[i].r),
                    1+shars[i].r+random(windowheight-shars[i].r),shars[i].r, random(15)-7,random(12)-6);
 end;
{ обсчитываем движение пока не нажата какая-либо клавиша }
{ показываем все шары }
lockdrawing;
repeat
clearwindow;{ убираем с экрана все шары }
for i:=1 to MaxShar do
shars[i].Show;
{временная задержка - установите свое значение для вашего компьютера }
sleep(50);
{ просчитываем следующий шаг }
for i:=1 to MaxShar do
 begin
  shars[i].Move;
  shars[i].CheckBorder;
  shars[i].CheckHit(i);
 end;
for i:=1 to MaxShar do
shars[i].hits:=[];
redraw;
until false;
end.


Вернуться к обсуждению:
Перевести код программы с Turbo Pascal в PascalABC
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2016, 19:01
Готовые ответы и решения:

Переделать код программы из Turbo Pascal в PascalABC
Ребят может кто-нибудь помочь пожалуйста из PascalABC.NET в PascalABC переделать код программы и...

Перевод кода с PascalABC в код Turbo Pascal
Прошу помочь в переводе кода с PascalABC в код Turbo Pascal.Заранее благодарю за помощь. //...

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться....

Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы
Вот код, он должен рисовать работающею мельницу. uses graphABC,crt; type point=record ...

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