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