Заполнить массив случайными числами в интервале [-100,100] и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а все отрицательные и нули – в конце. вычислите количество положительных элементов. пример: массив: 20 -90 15 -34 10 0 результат: 20 15 10 -90 -34 0 количество положительных элементов: 3

grange grange    2   20.09.2019 07:30    33

Ответы
melnikowapolia melnikowapolia  21.08.2020 12:18
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программа не работает, обновите версию!

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
ПОКАЗАТЬ ОТВЕТЫ
gurulezz1257 gurulezz1257  08.01.2024 21:47
Хорошо, я представлю себя в роли школьного учителя и объясню, как решить данную задачу.

Для начала, нам понадобится создать массив и заполнить его случайными числами в интервале [-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)
```

Теперь, если запустить данный код, мы получим исходный массив, переставленный массив и количество положительных элементов в нем.

Надеюсь, ответ был понятен и полезен для вас! Если остались какие-либо вопросы, пожалуйста, не стесняйтесь задавать их.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика