Вычислить произведение отрицательных элементов массива - C (СИ)
Формулировка задачи:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
•произведение отрицательных элементов массива;
• сумму положительных элементов массива, расположенных до максимального элемента.
• Изменить порядок следования элементов в массиве на обратный.
Решение задачи: «Вычислить произведение отрицательных элементов массива»
textual
Листинг программы
#include <iostream> #include <iomanip> #include <algorithm> void reverse(float [], int, int); int main() { const int n = 5; float mass[n] = {-1.5, 3.7, -5.7, 4.3, 16.7}; float negativeProduct = 1; float positiveSum = 0; int indexOfMax = 0; float max = mass[0]; for(int i = 0; i < n; i++) { std::cout << std::setw(5) << mass[i]; if(mass[i] > max) { max = mass[i]; indexOfMax = i; } } std::cout << "\n\nПроизведение отрицательных эл-ов: "; for(int i = 0; i < n; i++) negativeProduct = mass[i] < 0 ? negativeProduct * mass[i] : negativeProduct; std::cout << negativeProduct << std::endl; std::cout << "\nСумма положительных эл-ов до max: "; for(int i = 0; i < indexOfMax; i++) positiveSum = mass[i] > 0 ? positiveSum + mass[i] : positiveSum; std::cout << positiveSum << std::endl; std::cout << "\nИзмененный порядок следования: " << std::endl; reverse(mass,0,sizeof(mass)/sizeof(float)-1); for(int i = 0; i < n; i++) std::cout << std::setw(5) << mass[i]; std::cout << std::endl; return 0; } void reverse(float mass[], int begin, int end) { if(begin < end) { reverse(mass,begin+1,end-1); std::swap(mass[begin],mass[end]); } }
Объяснение кода листинга программы
В этом коде вычисляется произведение отрицательных элементов массива, а также выводится на экран измененный порядок следования элементов массива. Список действий:
- Объявление переменных:
n
- размер массива (5);mass
- массив ({-1.5, 3.7, -5.7, 4.3, 16.7}
);negativeProduct
- произведение отрицательных элементов массива (1);positiveSum
- сумма положительных элементов массива до максимального элемента (0);indexOfMax
- индекс максимального элемента (0);max
- максимальный элемент массива (16.7);reverse
- функция для переворачивания элементов массива;begin
иend
- указатели на начало и конец участка массива, который необходимо перевернуть.
- Вывод на экран всех элементов массива.
- Поиск максимального элемента массива и его индекса.
- Вычисление произведения отрицательных элементов массива.
- Вычисление суммы положительных элементов массива до максимального элемента.
- Вывод на экран измененного порядка следования элементов массива.
- Рекурсивный вызов функции
reverse
для участка массива, который необходимо перевернуть. - Обмен значениями элементов массива
mass[begin]
иmass[end]
. - В случае, если
begin < end
, рекурсивный вызов функцииreverse
для участка массива, который находится междуbegin
иend
. - В конце программы возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д