Написать функцию, которая принимает 3 числа, наибольшее из них делит наименьшее и возвращает это значение. для решения понадобится оператор деления с остатком
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
дешифровки: Const sh = '_.,'; Var St : String; i : Integer; Function DeCode(S : String; Tabl : String; k : Integer) : String; Var j,n : Integer; Begin For j:=1 to Length(S) do Begin n:=Pos(S[j],sh); If n>0 then Begin n:=n+k; While n>Length(sh) do n:=n-Length(sh); While n<=0 do n:=n+Length(sh); S[j]:=sh[n]; end end; DeCode:=S; end; Begin St:='ЗЫФЙГФШРЦ . ШД'; Writeln(Decode(St,sh,-6)); //For i:=-10 to 10 do Writeln(Decode(St,sh,i)); end.
Расстояние от точки до начала координат находится как длина гипотенузы прямоугольного треугольника, катетами которого являются координаты точки. Поскольку нам нужны не сами расстояния, а лишь сравнить их, то можно сравнивать квадраты, чтобы не извлекать корня.
// PascalABC.NET 3.0, сборка 1088 var x1,x2,y1,y2,r1,r2:real; begin Write('Введите координаты первой точки: '); Read(x1,y1); Write('Введите координаты второй точки: '); Read(x2,y2); r1:=sqr(x1)+sqr(y1); r2:=sqr(x2)+sqr(y2); if r1>r2 then Writeln('Ближе вторая точка') else if r1<r2 then Writeln('Ближе первая точка') else Writeln('Точки равноудалены') end.
Тестовое решение: Введите координаты первой точки: 16.3 -11.7 Введите координаты второй точки: 15.8 12 Ближе вторая точка
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