Задание 2. Ученик хотел написать программу рисования римского числа X, но при составлении программы запутался с
командами опустить перо и поднять перо. Исправьте програм-
му так, чтобы вместо числа II получилось число Х.
использовать Чертежник
алг
нач
поднять перо
сместиться в точку (1, 1)
опустить перо
сместиться на вектор (0, 4)
поднять перо
сместиться на вектор (2, -4)
опустить перо
сместиться на вектор (0, 4)
поднять перо
сместиться на вектор (-2, -4)
KOH
// Внимание! Если программа не работает, обновите версию!
unit ASM;
interface
type SF=(integer,integer);
function AddSF(a,b:SF):SF;
function SubSF(a,b:SF):SF;
function MultSF(a,b:SF):SF;
function DivSF(a,b:SF):SF;
implementation
function Gcd(p:SF):integer;
begin
(var a,var b):=p;
a:=abs(a); b:=abs(b);
while b>0 do (a,b):=(b,a mod b);
Result:=a
end;
function ReductSF(p:SF):SF;
begin
var t:=Gcd(p);
if t>1 then Result:=(p[0] div t,p[1] div t)
else Result:=p
end;
function AddSF(a,b:SF):=ReductSF((a[0]*b[1]+a[1]*b[0],a[1]*b[1]));
function SubSF(a,b:SF):=ReductSF((a[0]*b[1]-a[1]*b[0],a[1]*b[1]));
function MultSF(a,b:SF):=ReductSF((a[0]*b[0],a[1]*b[1]));
function DivSF(a,b:SF):=ReductSF((a[0]*b[1],a[1]*b[0]));
end.
Пример работы с модулем
uses ASM;
begin
var a:=(5,24);
var b:=(7,8);
var c:=AddSF(a,b);
Writeln(a[0],'/',a[1],'+',b[0],'/',b[1],'=',c[0],'/',c[1])
end.
Результат
5/24+7/8=13/12
var a,b:integer;
begin
writeln('Введите 1-е число: ');read(a);
writeln('Введите 2-е число: ');read(b);
if(a>=b) then writeln('максимальное число: ', a) else writeln('максимальное число: ', b);
end.
2)
program p1;
procedure MaxNumber(a,b: integer; var max: integer);
begin
if a>=b then max:=a else max:=b;
end;
var a,b,c,d,m:integer;
begin
writeln('Введите 1-е число: ');read(a);
writeln('Введите 2-е число: ');read(b);
writeln('Введите 3-е число: ');read(c);
writeln('Введите 4-е число: ');read(d);
MaxNumber(a,b,m);
MaxNumber(m,c,m);
MaxNumber(m,d,m);
writeln('максимальное число: ',m);
end.