Задание по теме "одномерные массивы". Нужно написать код на ЯП'е C++:
В одномерном массиве, состоящем из N действительных чисел, вычислить:
■ Сумму отрицательных элементов;
■ Произведение элементов, расположенных между min и max элементами;
■ Произведение элементов с парными номерами;
■ Сумму элементов между первым и последним отрицательными элементами.

Ответы

Ответ дал: Аноним
1

#include <iostream>

using namespace std;

int main() {

size_t N, *firstNegative = nullptr, lastNegative, minIndex, maxIndex;

cin >> N;

int64_t* arr = new int64_t[N], min = INT64_MAX, max = INT64_MIN;

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

 cin >> arr[i];

 if (arr[i] < 0) {

  if (firstNegative == nullptr) {

   firstNegative = new size_t;

   *firstNegative = i;

  }

  lastNegative = i;

 }

 if (arr[i] < min) {

  min = arr[i];

  minIndex = i;

 }

 else if (arr[i] > max) {

  max = arr[i];

  maxIndex = i;

 }

}

int64_t sumNegative = 0, minMaxMult = 1, evenMult = 1, sumFirstLastNegative = 0;

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

 if (arr[i] < 0)

  sumNegative += arr[i];

 if ((minIndex < maxIndex && i > minIndex && i < maxIndex) || (minIndex > maxIndex && i < minIndex && i > maxIndex))

  minMaxMult *= arr[i];

 if ((i + 1) % 2 == 0) // i + 1 п-ку обычно считают с 1

  evenMult *= arr[i];

 if (i > *firstNegative && i < lastNegative)

  sumFirstLastNegative += arr[i];

}

setlocale(0, "");

cout << "Сумма отрицательных элементов: " << sumNegative << endl;

cout << "Произведение элементов между минимальным и максимальным элементами: " << minMaxMult << endl;

cout << "Произведение элементов с парными (чётными) порядковыми номерами: " << evenMult << endl;

cout << "Сумма элементов между первым и последним отрицательными элементами: " << sumFirstLastNegative << endl;

}

Вас заинтересует