Вычислить произведение отрицательных элементов массива - 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, что означает успешное выполнение программы.