zadach42.BAS

{* Задача42 *}

REM basic

' Заполнить массив B(20) случайными целыми числами
' в диапазоне (-5, 20). Отсортировать В так, чтобы сначала располагались
' отрицательные элементы, затем равные нулю и положительные. Упорядочить
' массив по возрастанию. Найти максимальное отрицательное и минимальное
' положительное значение.


CLS : RANDOMIZE TIMER
INPUT "Количество элементов"; N
Dim B(N)
PRINT "Исходный массив"
For i = 1 To N
        B(i) = CInt(RND * (20 + 5) - 5)
        PRINT B(i);
Next i: PRINT

For i = 1 To N 
        If B(i) < 0 Then k = k + 1: SWAP B(k), B(i)
Next i
For i = 1 To N  
        If B(i) = 0 Then k = k + 1: SWAP B(k), B(i)
Next i
For i = 1 To N  
        If B(i) > 0 Then k = k + 1: SWAP B(k), B(i)
Next i

PRINT "Отсортированный массив"
For i = 1 To N
        PRINT B(i);
Next i: PRINT

max = B(1)
For i = 1 To N
    For j = 1 To N + 1 - i
          If B(j) >= max Then max = B(j): k = j
    Next j
         SWAP B(k), B(N + 1 - i): max = -10 ^ 10
Next i

PRINT "Упорядоченный по возрастанию"
For i = 1 To N
        PRINT B(i);
Next i: PRINT

max = -10 ^ 10: min = 10 ^ 10
For i = 1 To N
        If B(i) < 0 And B(i) > max Then max = B(i)
        If B(i) > 0 And B(i) < min Then min = B(i)
Next i
PRINT "MAXотр.  = "; max; "MINпол. = "; min
End
End