ответ: Предыдущий цикл статей, в котором давались советы относительно того как выходить из лабиринта не закончился самым главным - там было объяснено правило правой руки, давался обзор тактик решения задачи для средней категории World Robot Olympiad 2011, советы по тому, какими датчиками и как пользоваться, но так и не было рассмотрено, как написать самую простую программу. Настало время наверстать этот момент.
Итак, сперва следует напомнить, какие же основные блоки определяют поведение робота в лабиринте:
Движение прямо с опросом датчиков, обнаруживающих проход справа, и датчиков, обнаруживающих столкновение с преградой
var a,b: array[1..n,1..n] of integer; c,r: array[1..n] of integer; i, j: integer;
begin Randomize; { инициализация } Writeln('Матрица a'); for i := 1 to n do begin for j:=1 to n do begin a[i,j]:= Random(51); Write(a[i,j]:3) end; Writeln end; Writeln('Матрица b'); for i := 1 to n do begin for j:=1 to n do begin b[i,j]:= Random(51); Write(b[i,j]:3) end; Writeln end; Writeln('Вектор c'); for i := 1 to n do begin c[i]:= Random(51); Write(c[i]:3) end; Writeln; { вычисление и вывод } Writeln('Вектор результата'); for i:=1 to n do begin r[i]:=0; for j:=1 to n do r[i]:=r[i]+c[j]*(5*a[i,j]+b[i,j]); Write(r[i],' ') end end.
ответ: Предыдущий цикл статей, в котором давались советы относительно того как выходить из лабиринта не закончился самым главным - там было объяснено правило правой руки, давался обзор тактик решения задачи для средней категории World Robot Olympiad 2011, советы по тому, какими датчиками и как пользоваться, но так и не было рассмотрено, как написать самую простую программу. Настало время наверстать этот момент.
Итак, сперва следует напомнить, какие же основные блоки определяют поведение робота в лабиринте:
Движение прямо с опросом датчиков, обнаруживающих проход справа, и датчиков, обнаруживающих столкновение с преградой
Поворот направо, в случае обнаружения прохода
Поворот налево, в случае обнаружения препятствия
Объяснение:
n = 5;
var
a,b: array[1..n,1..n] of integer;
c,r: array[1..n] of integer;
i, j: integer;
begin
Randomize;
{ инициализация }
Writeln('Матрица a');
for i := 1 to n do
begin
for j:=1 to n do
begin
a[i,j]:= Random(51);
Write(a[i,j]:3)
end;
Writeln
end;
Writeln('Матрица b');
for i := 1 to n do
begin
for j:=1 to n do
begin
b[i,j]:= Random(51);
Write(b[i,j]:3)
end;
Writeln
end;
Writeln('Вектор c');
for i := 1 to n do
begin
c[i]:= Random(51);
Write(c[i]:3)
end;
Writeln;
{ вычисление и вывод }
Writeln('Вектор результата');
for i:=1 to n do
begin
r[i]:=0;
for j:=1 to n do r[i]:=r[i]+c[j]*(5*a[i,j]+b[i,j]);
Write(r[i],' ')
end
end.
Тестовое решение:
Матрица a
44 49 29 34 2
48 1 33 10 24
43 48 29 4 50
2 14 5 25 21
39 31 19 12 23
Матрица b
42 32 26 10 37
35 29 6 49 43
42 44 10 32 11
32 20 3 11 41
22 40 9 35 10
Вектор c
39 9 23 45 44
Вектор результата
26812 26591 29968 15636 22385