до завтра надо Составьте программу рисования фигуры, изображенной на рисунке, таким образом, чтобы во время рисования перо не отрывалось от бумаги, и ни одна линия не проводилась дважды.
Кумир - Исполнитель Чертежник - Алгоритм рисования простой фигуры 9
Var n, k, d2, d1, d0: integer; e2, e1, e0: integer;
procedure GetDigits(m: integer; var d2, d1, d0: integer); {Перевод числа [100..FFF]в 16-ю систему счисления} begin d0 := m mod 16; m := m div 16; d1 := m mod 16; d2 := m div 16 end;
begin n := 0; {Рассматриваем шестнадцатиричные числа от 100 до 7FF} for k := $100 to $7FF do begin GetDigits(k, d2, d1, d0); if (d2 = 2) or (d1 = 2) or (d0 = 2) then begin GetDigits(2 * k, e2, e1, e0); if d0 + d1 + d2 = e0 + e1 + e2 then n := n + 1 end end; writeln('n=', n) end.
Type St = record iquo: integer; {целая часть} irem: integer; {числитель дроби} idiv: integer; {знаменатель дроби} end;
function iMax(i, j: integer): integer; begin if i > j then iMax := i else iMax := j end;
function iMin(i, j: integer): integer; begin if i < j then iMin := i else iMin := j end;
function FR(i, j, k: integer): St; var nmax, nmin: integer;
begin nmax := iMax(iMax(i, j), k); nmin := iMin(iMin(i, j), k); with Result do begin iquo := nmax div nmin; idiv := nmin; irem := nmax mod nmin end end;
var a, b, c: integer; r: St;
begin write('Введите через пробел три целых числа:'); readln(a, b, c); r := FR(a, b, c); writeln('Результат работы функции: ', r.iquo, ' целых и ', r.irem, '/', r.idiv) end.
Тестовое решение:
Введите через пробел три целых числа:343 253 37 Результат работы функции: 9 целых и 10/37
n, k, d2, d1, d0: integer;
e2, e1, e0: integer;
procedure GetDigits(m: integer; var d2, d1, d0: integer);
{Перевод числа [100..FFF]в 16-ю систему счисления}
begin
d0 := m mod 16;
m := m div 16;
d1 := m mod 16;
d2 := m div 16
end;
begin
n := 0;
{Рассматриваем шестнадцатиричные числа от 100 до 7FF}
for k := $100 to $7FF do
begin
GetDigits(k, d2, d1, d0);
if (d2 = 2) or (d1 = 2) or (d0 = 2) then
begin
GetDigits(2 * k, e2, e1, e0);
if d0 + d1 + d2 = e0 + e1 + e2 then n := n + 1
end
end;
writeln('n=', n)
end.
Тестовое решение:
n=23
St = record
iquo: integer; {целая часть}
irem: integer; {числитель дроби}
idiv: integer; {знаменатель дроби}
end;
function iMax(i, j: integer): integer;
begin
if i > j then iMax := i else iMax := j
end;
function iMin(i, j: integer): integer;
begin
if i < j then iMin := i else iMin := j
end;
function FR(i, j, k: integer): St;
var
nmax, nmin: integer;
begin
nmax := iMax(iMax(i, j), k);
nmin := iMin(iMin(i, j), k);
with Result do
begin
iquo := nmax div nmin;
idiv := nmin;
irem := nmax mod nmin
end
end;
var
a, b, c: integer;
r: St;
begin
write('Введите через пробел три целых числа:');
readln(a, b, c);
r := FR(a, b, c);
writeln('Результат работы функции: ', r.iquo, ' целых и ', r.irem, '/', r.idiv)
end.
Тестовое решение:
Введите через пробел три целых числа:343 253 37
Результат работы функции: 9 целых и 10/37