13 Исполнитель К17 преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 1 2. Прибавить 2 3. Умножить на 2 Первая из них увеличивает число на экране на 1, вторая увеличивает его на 2, третья умножает на 2. Программа для исполнителя К17 — это последовательность команд. Сколько существует таких программ, которые преобразуют исходное число 4 в число 13 и при этом траектория вычислений программы содержит числа 10 и 12? Траектория должна содержать оба указанных числа. Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 132 при исходном числе 7 траектория будет состоять из чисел 8, 16, 18.
n = 1000;
var
massiv : array[1..n] of integer;
countOfElements, maxElement, i, m, j : integer;
begin
write('Введите количество элементов массива: '); readln(countOfElements);
writeln('Введите элементы массива');
for i := 1 to countOfElements do
read(massiv[i]);
writeln();
maxElement := massiv[1];
for i := 1 to countOfElements do
if (maxElement < massiv[i]) then maxElement := massiv[i];
m := countOfElements;
i := 1;
while i <= m do
if massiv[i] = maxElement then
begin
for j := i to countOfElements - 1 do
massiv[j] := massiv[j+1];
m := m - 1;
end
else
i := i + 1;
massiv[countOfElements] := 0;
write('Максимальный элемент: '); writeln(maxElement);
for i := 1 to countOfElements do
write(massiv[i]:4);
end.
type
Point=record
x,y:double;
end;
procedure GetPoint(c:char; var M:point);
begin
Write('введите координаты точки ',c,': ');
Read(M.x,M.y)
end;
function L(A,B:Point):double;
begin
Result:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y))
end;
function S(A,B,C:Point):double;
var
p,la,lb,lc:double;
begin
la:=L(A,B); lb:=L(B,C); lc:=L(C,A);
if (la+lb>lc) and (la+lc>lb) and (lb+lc>la) then begin
p:=0.5*(la+lb+lc);
Result:=sqrt(p*(p-la)*(p-lb)*(p-lc))
end
else
Result:=0
end;
var
A,B,C,D:Point;
S1,S2:double;
begin
GetPoint('A',A);
GetPoint('B',B);
GetPoint('C',C);
GetPoint('D',D);
S1:=S(A,B,C);
if S1=0 then Write('По точкам А,В,С нельзя построить треугольник')
else begin
S2:=S(C,D,A);
if S2=0 then Write('По точкам C,D,A нельзя построить треугольник')
else Writeln('Площадь четырехугольника равна ',S1+S2)
end
end.
Тестовое решение:
введите координаты точки A: -5 -7
введите координаты точки B: -2 4
введите координаты точки C: 5 9
введите координаты точки D: 9 -3
Площадь четырехугольника равна 123