На бесконечном поле имеется длинная горизонтальная стена. длина стены неизвестна. от нижнего конца стены влево отходит горизонтальная стена также неизвестной длины. робот находится в клетке, расположенной справа от верхнего края вертикальной стены. на рисунке указан один из возможных расположения стен и робота (робот обозначен буквой «р»). (1 рисунок) напишите для робота алгоритм, закрашивающий все клетки, расположенные непосредственно правее вертикальной стены, ниже горизонтальной стены и угловую клетку. робот должен закрасить только клетки, удовлетворяющие данному условию. например, для выше рисунка робот должен закрасить следующие клетки (см. рисунок). (2 рисунок) конечное расположение робота может быть произвольным. алгоритм должен решать для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. при исполнении алгоритма робот не должен разрушиться.(желательно сделать в блокноте, если можно)
begin
var arr:array[1..30] of integer; var max1:=-1;
var min2:=1;
var max3:=-999999;
for var i := 1 to 30 do readln(arr[i]);
writeln(arr.JoinIntoString());
for var i := 1 to 30 do
begin
if (arr[i] >= 0) and (arr[i] > max1) and (arr[i] mod 2 = 0) then max1 := arr[i];
if (arr[i] < 0) and (arr[i] < min2) and (arr[i] mod 2 <> 0) then min2 := arr[i];
if (arr[i] mod 7 = 0) and (arr[i] > max3) then max3 := arr[i];
end;
writeln('Максимальное среди четных положительных чисел:' + max1);
writeln('Минимальное среди нечетных отрицательных чисел:' + min2);
writeln('Максимальное среди чисел кратных 7:' + max3);
end.
...
Скажи, если надо объяснить
...
Если не сложно нажми " " ;)
begin
var a:=ArrRandom(30,-99,99); a.Println;
Writeln(a.Where(x->(x>0) and x.IsEven).Max)
end.
Тестовое решение:
79 -52 -50 -48 0 -99 96 -70 39 -62 59 42 3 -17 17 87 -4 34 -87 34 -22 78 94 76 89 61 -71 -45 -30 3
96
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016
begin
var a:=ArrRandom(30,-99,99); a.Println;
Writeln(a.Where(x->(x<0) and x.IsOdd).Min)
end.
Тестовое решение:
-81 98 86 94 -23 27 44 -52 -21 89 -52 58 -79 13 60 -39 90 99 -21 43 25 72 30 -17 -25 47 26 -41 -23 -41
-81
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016
begin
var a:=ArrRandom(30,-99,99); a.Println;
Writeln(Range(6,29,7).Select(i->a[i]).Max)
end.
Тестовое решение:
-70 -16 -1 28 53 -44 -11 56 -54 78 -48 23 -85 29 -87 -30 24 -59 -78 63 -84 -82 -57 64 61 76 50 -37 81 -28
29
Конечно, проще было все написать в одной программе:
// PascalABC.NET 3.1, сборка 1213 от 04.04.2016
begin
var a:=ArrRandom(30,-99,99); a.Println;
Writeln(a.Where(x->(x>0) and x.IsEven).Max);
Writeln(a.Where(x->(x<0) and x.IsOdd).Min);
Writeln(Range(6,29,7).Select(i->a[i]).Max)
end.
Тестовое решение:
68 99 57 92 -12 -67 71 -23 58 26 20 -47 6 63 -54 -92 -91 -24 27 -25 75 94 88 65 32 15 -56 -58 -85 -78
94
-91
75