Перевести код с языка C++ на язык Паскаль - Pascal
Формулировка задачи:
Помогите написать в паскаль данную программу
using namespace std; struct m { int n; int l; int r; } d[3]; bool cmp(const m &x, const m &y) { return x.l < y.l; } int main() { for (int c = 0; c < 3; ++c) { d[c].n = c + 1; cin >> d[c].l >> d[c].r; } sort(d, d + 3, cmp); if (d[0].r >= d[1].l && (d[1].r >= d[2].l || d[0].r >= d[2].r)) { cout << 0; } else { bool p0 = false, p2 = false; if (d[1].r + d[0].r - d[0].l >= d[2].l) p0 = true; if (d[0].r + d[2].r - d[2].l >= d[1].l) p2 = true; if (p0 && p2) cout << min(d[0].n, d[2].n); else if (p0) cout << d[0].n; else if (p2) cout << d[2].n; else cout << -1; } }
Решение задачи: «Перевести код с языка C++ на язык Паскаль»
textual
Листинг программы
type m = record n, l, r: Integer; end; function cmp(const x, y: m): Boolean; begin cmp:=x.l<y.l; end; function min(x, y: Integer): Integer; begin if x<y then min:=x else min:=y; end; procedure swp(var x, y: m); var t: m; begin t:=x; x:=y; y:=t; end; var d: array [0..2] of m; t: m; c: Integer; p0, p2: Boolean; begin for c:=Low(d) to High(d) do with d[c] do begin n:=c+1; Read(l,r); end; if cmp(d[1],d[0]) then swp(d[1],d[0]); if cmp(d[2],d[1]) then swp(d[2],d[1]); if cmp(d[1],d[0]) then swp(d[1],d[0]); if (d[0].r>=d[1].l) and ((d[1].r>=d[2].l) or (d[0].r>=d[2].r)) then WriteLn(0) else begin p0:=d[1].r+d[0].r-d[0].l>=d[2].l; p2:=d[0].r+d[2].r-d[2].l>=d[1].l; if p0 and p2 then WriteLn(min(d[0].n,d[2].n)) else if p0 then WriteLn(d[0].n) else if p2 then WriteLn(d[2].n) else WriteLn(-1); end; end.
Объяснение кода листинга программы
- Создается запись с тремя полями типа Integer с именем
m
. - Создается функция
cmp
с двумя параметрами-константамиx
иy
типаm
, возвращающая значение типа Boolean. - В функции
cmp
происходит сравнение значений поляl
в переменныхx
иy
. - Создается функция
min
с двумя параметрами типаInteger
, возвращающая значение типаInteger
. - В функции
min
происходит сравнение значений переменныхx
иy
, возвращается минимальное из них. - Создается процедура
swp
с двумя параметрами-переменнымиx
иy
типаm
, а также локальной переменнойt
типаm
. - В процедуре
swp
происходит обмен значений переменныхx
иy
через временную переменнуюt
. - Объявляются глобальные переменные: массив
d
из трех элементов типаm
, переменнаяt
типаm
, переменнаяc
типаInteger
, и переменные-флагиp0
иp2
типаBoolean
. - В цикле происходит инициализация каждого элемента массива
d
их индексами и значениями, считываемыми с клавиатуры. - Происходит сравнение и, если требуется, обмен значений элементов массива
d
с использованием функцииcmp
и процедурыswp
. - Происходит проверка условий и вывод соответствующих результатов на экран в зависимости от значений полей структур массива
d
и переменных-флаговp0
иp2
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д