<em>// PascalABC.NET 3.2, сборка 1356 от 04.12.2016</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
type
Point=record
x,y:real;
name:char
end;
Vector=record
x,y,l:real;
end;
function CreatePoint(px,py:real):Point;
begin
With Result do begin
x:=px;
y:=py;
end
end;
function CreateVector(A,B:Point):Vector;
begin
With Result do begin
x:=B.x-A.x;
y:=B.y-A.y;
l:=Sqrt(x*x+y*y)
end
end;
function IsNormal(A,B:Vector):=Abs(B.x*A.x+B.y*A.y)<=1e-6;
begin
var x,y:real;
Write('Введите координаты x и y точки A: '); Read(x,y);
var A:=CreatePoint(x,y);
Write('Введите координаты x и y точки B: '); Read(x,y);
var B:=CreatePoint(x,y);
var AB:=CreateVector(A,B);
Write('Введите координаты x и y точки C: '); Read(x,y);
var C:=CreatePoint(x,y);
var BC:=CreateVector(B,C);
if Abs(AB.l-BC.l)>1e-6 then begin
Writeln('Стороны AB и BC не равны');
Exit
end;
if not IsNormal(AB,BC) then begin
Writeln('Стороны AB и BC не перпендикулярны');
Exit
end;
Write('Введите координаты x и y точки D: '); Read(x,y);
var D:=CreatePoint(x,y);
var CD:=CreateVector(C,D);
if Abs(AB.l-CD.l)>1e-6 then begin
Writeln('Стороны AB и CD не равны');
Exit
end;
var AD:=CreateVector(D,A);
if Abs(AB.l-AD.l)>1e-6 then Writeln('Стороны AB и ADC не равны')
else Writeln('Точки образуют квадрат с точностью не ниже 0.000001')
end.
<u>Пример</u>
<u>Здесь заданы координаты квадрата, сдвинутого относительно осей координат и повернутого на угол 30 градусов против часовой стрелки. Поэтому числа такие "некруглые".</u>
Введите координаты x и y точки A: -0.4641 -4.4641
Введите координаты x и y точки B: 3.5359 2.4641
Введите координаты x и y точки C: 10.4641 -1.5359
Введите координаты x и y точки D: 6.4641 -8.4641
Точки образуют квадрат с точностью не ниже 0.000001
Мощность второго алфавита в два раза больше 2048*2=4096
Цепочка символов КОМ. Цепочка нечётна, дублируем средний символ.
КООМ. Следующая операция - заменяем все буквы на следующие.
ЛППН
В задании сказано, применить алгоритм к цепочке дважды. Поехали
ЛППН - чётное число букв, значит СЛППН
Меняем буквы
ТМРРО
Ответ: ТМРРО
При использовании random() упорядоченные строки получаются редко. Можете массив вводить с клавиатуры.
const n=5; m=4;
var
a:array[1..n,1..m] of integer;
i,j,max:integer;
b1,b2:boolean;
begin
Randomize;
writeln('Исходный массив:');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;
max:=-1000;
for i:=1 to n do
begin
b1:=true; b2:=true;
for j:=1 to m-1 do
begin
if a[i,j]<a[i,j+1] then b1:=false;
if a[i,j]>a[i,j+1] then b2:=false;
end;
if b1 or b2 then
for j:=1 to m do
if a[i,j]>max then max:=a[i,j];
end;
if max<>-1000
then writeln('max = ',max)
else writeln('В массиве нет упорядоченных строк');
end.
Пример:
<span> 45 34 88 53
2 7 36 71
48 57 28 42
75 61 10 93
15 3 61 54
max = 71</span>