На бесконечном поле есть горизонтальная и вертикальная стены. Правый конец горизонтальной стены соединён с нижним концом вертикальной стены. Длины стен неизвестны. В каждой стене есть ровно один проход, точное место прохода и его ширина неизвестны. Робот находится в клетке, расположенной непосредственно справа от вертикальной стены у её верхнего конца. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р»). Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно выше горизонтальной стены и правее вертикальной стены. Проходы должны остаться незакрашенными. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок).
При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для любого допустимого расположения стен и любого расположения и размера проходов внутри стен. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
1.const N=10; type Vector = array [1..N] of integer; var B: vector; max :integer; procedure IntVector(N: integer; var a: vector); begin for var i := 1 to N do a[i] := random(100); end; procedure OutVector(N: integer; a: vector); begin for var i := 1 to N do begin write(a[i]:5); end; end; procedure Srav (a:vector; N,g:integer); begin g := a[1]; for var i:=1 to N do if (g < a[i]) then g:=a[i]; writeln (g); end; Begin IntVector(N, B); writeln; OutVector(N, B ); writeln; Srav(B,N, max); writeln; End. 2. const N = 10; type Vector = array [1..N] of integer; var B: vector; r,v : real; procedure IntVector(N: integer; var a: vector); begin for var i := 1 to N do a[i] := random(20); end; procedure OutVector(N: integer; a: vector); begin for var i := 1 to N do begin write(a[i]:5); end; end; function srednee(a: vector; N: integer): real; begin for var i := 1 to N do begin result := (result + a[i]); end; end; function kolvo(a: vector; g: real): real; begin for var i := 1 to N do if (a[i] < (srednee(a, N)/10)) then result := result + 1; end; begin IntVector(N, B); writeln; OutVector(N, B ); writeln; writeln ((srednee(B, N)/10):5:3); r := kolvo(B, v); writeln(r); end.
type Vector = array [1..N] of integer;
var B: vector;
max :integer;
procedure IntVector(N: integer; var a: vector);
begin
for var i := 1 to N do a[i] := random(100);
end;
procedure OutVector(N: integer; a: vector);
begin for var i := 1 to N do
begin write(a[i]:5);
end;
end;
procedure Srav (a:vector; N,g:integer);
begin
g := a[1];
for var i:=1 to N do
if (g < a[i]) then g:=a[i];
writeln (g);
end;
Begin
IntVector(N, B);
writeln;
OutVector(N, B );
writeln;
Srav(B,N, max);
writeln;
End.
2. const N = 10;
type Vector = array [1..N] of integer;
var B: vector;
r,v : real;
procedure IntVector(N: integer; var a: vector);
begin
for var i := 1 to N do
a[i] := random(20);
end;
procedure OutVector(N: integer; a: vector);
begin
for var i := 1 to N do
begin
write(a[i]:5);
end;
end;
function srednee(a: vector; N: integer): real;
begin
for var i := 1 to N do begin result := (result + a[i]);
end;
end;
function kolvo(a: vector; g: real): real;
begin
for var i := 1 to N do
if (a[i] < (srednee(a, N)/10)) then result := result + 1;
end;
begin
IntVector(N, B); writeln;
OutVector(N, B );
writeln;
writeln ((srednee(B, N)/10):5:3); r := kolvo(B, v);
writeln(r);
end.
Объяснение:
1. Можно вычислять скорость передачи, но в конкретном случае намного проще решить математически, через пропорцию:
12 Мб - 9 минут
8 Мб - x минут
x=8*9/12= 6 минут
2. В книжке всего 400*30*60=720000 символов. Каждый символ кодируется 8 битами. Значит всего в книжке 720000*8=5760000 бит.
При скорости передачи 5 кбит/с = 5120 бит/с книжку можно передать за 5760000 / 5120=1125 секунд.
3. 2 Кб = 2048 байт= 2048*8=16384 бит.
Если 16384 бит передали за 8 с, то каждую секунду передается 16384/8=2048 бит