PascalABC.NET
begin
var a := ArrRandom(4, -10, 20);
a.Println;
// ищем j - позицию первого неотрицательного элемента
var j := -1;
for var i := 0 to a.High do
if a[i] >= 0 then // нашли
begin
j := i;
break
end;
if j > -1 then
begin
for var i := j + 1 to a.High do
if a[i] < 0 then
begin
for var k := i downto j + 1 do
Swap(a[k], a[k-1]);
j += 1;
if j >= a.High then break;
end;
a.Println
end
else
Println('Нет положительных элементов')
end.
Sub Strange()
Dim r As Range, a As Variant, b As Variant, e As Variant, Max As Variant
Set r = Selection
a = r
Max = -1E+100
For Each e In a
If e < 0 And e > Max Then
Max = e
End If
Next
Dim i As Integer, j As Integer
b = a
j = LBound(b, 2) - 1
For i = LBound(a, 2) To UBound(a, 2)
If a(1, i) = Max Then
j = j + 1
b(1, j) = i
End If
Next
Set r = Range(Cells(2, 1), Cells(2, j))
Rows(2).Clear
r = b
End Sub
x is 1