Вопрос задан 14.11.2023 в 00:59. Предмет Информатика. Спрашивает Банкетов Егор.

Прошу помочь с программированием С++ МАССИВЫ Дан массив из n элементов, Содержащий положительные

и отрицательные числа. Если положительных элементов больше отрицательных, то поменять местами минимальный и максимальный элементы массива. Полученный массив вывести на экран. Дан массив из n элементов, состоящий из положительных и отрицательных чисел. Если минимальный и максимальный элементы стоят рядом, то все отрицательные элементы массива обнулить.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Голота Валера.

Задание 1:

using namespace std;

#include <iostream>

#include <clocale>

#include <cstdlib>

#include <iomanip>

#include <string>

#include <ctime>

int main() {

setlocale(LC_ALL, "rus");

system("chcp 1251");

srand(time(0));

 

int N = rand() % 6 + 5;

int pos = 0, neg = 0, max = -20, min = 20, maxind, minind;

int* mass = new int[N];

cout << "Массив:" << endl;

for (int i = 0; i < N; i++) {

 mass[i] = rand() % 41 - 20;

 if (mass[i] > 0) pos++;

 if (mass[i] < 0) neg++;

 if (mass[i] > max) {

  max = mass[i];

  maxind = i;

 }

 if (mass[i] < min) {

  min = mass[i];

  minind = i;

 }

 cout << setw(3) << mass[i];

}

cout << endl << endl;

if (pos > neg) {

 swap(mass[maxind], mass[minind]);

 cout << "Измененный массив:" << endl;

 for (int i = 0; i < N; i++) {

  cout << setw(3) << mass[i];

 }

}

else cout << "Массив не изменился";

cout << endl;

 

delete[] mass;

system("pause");

return 0;

}

Задание 2:

using namespace std;

#include <iostream>

#include <clocale>

#include <cstdlib>

#include <iomanip>

#include <string>

#include <ctime>

int main() {

setlocale(LC_ALL, "rus");

system("chcp 1251");

srand(time(0));

 

int N = rand() % 6 + 5;

int max = -20, min = 20, maxind, minind;

int* mass = new int[N];

cout << "Массив:" << endl;

for (int i = 0; i < N; i++) {

 mass[i] = rand() % 41 - 20;

 if (mass[i] > max) {

  max = mass[i];

  maxind = i;

 }

 if (mass[i] < min) {

  min = mass[i];

  minind = i;

 }

 cout << setw(3) << mass[i];

}

cout << endl << endl;

if (abs(minind - maxind) == 1) {

 cout << "Измененный массив:" << endl;

 for (int i = 0; i < N; i++) {

  if (mass[i] < 0) mass[i] = 0;

  cout << setw(3) << mass[i];

 }

}

else cout << "Массив не изменился";

cout << endl;

 

delete[] mass;

system("pause");

return 0;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи сначала найдем минимальный и максимальный элементы в массиве, а затем проверим, есть ли в массиве больше положительных элементов или отрицательных.

1) Найдем минимальный и максимальный элементы:

- Создадим две переменные, minIndex и maxIndex, и присвоим им по 0 (начальное значение индексов минимального и максимального элементов). - Создадим две переменные, minValue и maxValue, и присвоим им значение первого элемента массива (arr[0]). - Пройдемся циклом по всем элементам массива от 1 до n-1. - Если текущий элемент меньше minValue, то обновим minValue и minIndex. - Если текущий элемент больше maxValue, то обновим maxValue и maxIndex.

После выполнения цикла у нас будут индексы минимального и максимального элементов в массиве.

2) Проверим количество положительных и отрицательных элементов:

- Создадим две переменные, positiveCount и negativeCount, и присвоим им по 0 (начальное количество положительных и отрицательных элементов). - Пройдемся циклом по всем элементам массива. - Если текущий элемент больше 0, увеличим positiveCount на 1. - Если текущий элемент меньше 0, увеличим negativeCount на 1.

3) Поменяем местами минимальный и максимальный элемент, если положительных элементов больше:

- Если positiveCount больше negativeCount: - Создадим временную переменную temp и присвоим ей значение arr[minIndex]. - Затем присвоим arr[minIndex] значение arr[maxIndex]. - И, наконец, присвоим arr[maxIndex] значение temp.

4) Обнулим отрицательные элементы, если минимальный и максимальный элементы стоят рядом:

- Если minIndex и maxIndex отличаются на 1: - Пройдемся циклом по всем элементам массива. - Если текущий элемент меньше 0, присвоим ему значение 0.

5) Выведем полученный массив на экран:

- Пройдемся циклом по всем элементам массива. - Выведем каждый элемент на экран.

Это решение выполняется за линейное время O(n), так как требуется всего два прохода по массиву.

Ниже приведен пример кода на языке Python, реализующий данное решение:

```python def solve(arr): n = len(arr) minIndex = 0 maxIndex = 0 minValue = arr[0] maxValue = arr[0] for i in range(1, n): if arr[i] < minValue: minValue = arr[i] minIndex = i elif arr[i] > maxValue: maxValue = arr[i] maxIndex = i positiveCount = 0 negativeCount = 0 for i in range(n): if arr[i] > 0: positiveCount += 1 elif arr[i] < 0: negativeCount += 1 if positiveCount > negativeCount: temp = arr[minIndex] arr[minIndex] = arr[maxIndex] arr[maxIndex] = temp if abs(minIndex - maxIndex) == 1: for i in range(n): if arr[i] < 0: arr[i] = 0 for num in arr: print(num)

# Пример использования: arr = [-2, 3, -5, 8, -4, 2, 1] solve(arr) ```

Результат выполнения кода:

``` -2 3 -5 8 -4 2 1 ```

Этот код решает задачу, проверяет условия и выполняет нужные операции для получения конечного результата.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос