Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а все отрицательные и нули – в конце. вычислите количество положительных элементов. пример: массив: 20 -90 15 -34 10 0 результат: 20 15 10 -90 -34 0 количество положительных элементов: 3
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-100,100); a.Println;
a:=(a.Where(t->t>0)+a.Where(t->t<=0)).ToArray; a.Println
end.
Пример
n= 19
-84 -71 -76 -36 69 15 -64 12 60 -11 75 31 -42 19 66 78 -46 19 44
69 15 12 60 75 31 19 66 78 19 44 -84 -71 -76 -36 -64 -11 -42 -46
Для начала, нам понадобится создать массив и заполнить его случайными числами в интервале [-100,100]. Для этого используем функцию randint() из библиотеки random.
В питоне код будет выглядеть так:
```python
import random
# задаем размер массива
n = 10
# создаем пустой массив
arr = []
# заполняем массив случайными числами
for i in range(n):
arr.append(random.randint(-100, 100))
print("Исходный массив:", arr)
```
Теперь, чтобы переставить элементы так, чтобы все положительные элементы стояли в начале, а все отрицательные и нули – в конце, мы можем использовать два указателя - один в начале массива, другой в конце. Оба указателя будут сдвигаться внутрь массива и меняться местами, если встретится нужная пара элементов. Когда указатели пересекутся, мы закончим процесс перестановки.
Давайте реализуем это:
```python
# инициализируем указатели
left = 0
right = n - 1
# пока указатели не пересеклись, выполняем перестановку
while left < right:
# если элемент в начале массива отрицательный или ноль
if arr[left] <= 0:
# находим элемент в конце массива, который больше 0
while arr[right] <= 0 and left < right:
right -= 1
# меняем местами элементы
arr[left], arr[right] = arr[right], arr[left]
# передвигаем указатели
left += 1
right -= 1
print("Переставленный массив:", arr)
```
Теперь осталось только посчитать количество положительных элементов в переставленном массиве. Для этого мы проходимся по всем элементам массива и увеличиваем счетчик, если элемент больше нуля:
```python
# инициализируем переменную-счетчик
positive_count = 0
# считаем количество положительных элементов
for i in range(n):
if arr[i] > 0:
positive_count += 1
print("Количество положительных элементов:", positive_count)
```
Итоговый код будет выглядеть так:
```python
import random
# задаем размер массива
n = 10
# создаем пустой массив
arr = []
# заполняем массив случайными числами
for i in range(n):
arr.append(random.randint(-100, 100))
print("Исходный массив:", arr)
# инициализируем указатели
left = 0
right = n - 1
# пока указатели не пересеклись, выполняем перестановку
while left < right:
# если элемент в начале массива отрицательный или ноль
if arr[left] <= 0:
# находим элемент в конце массива, который больше 0
while arr[right] <= 0 and left < right:
right -= 1
# меняем местами элементы
arr[left], arr[right] = arr[right], arr[left]
# передвигаем указатели
left += 1
right -= 1
print("Переставленный массив:", arr)
# инициализируем переменную-счетчик
positive_count = 0
# считаем количество положительных элементов
for i in range(n):
if arr[i] > 0:
positive_count += 1
print("Количество положительных элементов:", positive_count)
```
Теперь, если запустить данный код, мы получим исходный массив, переставленный массив и количество положительных элементов в нем.
Надеюсь, ответ был понятен и полезен для вас! Если остались какие-либо вопросы, пожалуйста, не стесняйтесь задавать их.