Перевести код с языка 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.