Вычислить сумму отрицательных элементов массива - C (СИ) (73509)
Формулировка задачи:
Здравствуйте, прошу помочь в написании программы)
Задание:
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) Сумму отрицательных элементов массива;
2) Произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.
Не получается сделать 2 задание. Плохо у меня с программированием(
Вот что у меня получилось (Комментарии делал для себя, чтобы проще было ):
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "string.h"
#include "stdlib.h"
#include "time.h"
// Функция генерации случайных чисел в диапазоне от range_min до range_max
int rnd( int range_min, int range_max )
{
return (double)rand() / (RAND_MAX + 1) * (range_max - range_min) + range_min;
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
srand( (unsigned)time(NULL) );
int i, j, n, maxS, minS;
double tmp, z, w, max, min, s[100];
//=========================================================================
puts("Введите количество элементов массива:");
scanf(" %d", &n);
puts("\nМассив s:"); // массив со случайными значениями
for(i=0; i<n; i++)
{
s[i]=rnd(-5, 5); // диапазон от –5 до 5
printf("%lf ", s[i]);
}
//=========================================================================
puts("\n\nМассив по возрастанию:"); // метод "Пузырька"
for(i = 0; i <= n-1; i++)
{
for(j = 0; j <= n-2-i; j++)
{
if( s[j]<s[j+1] )
{
tmp = s[j];
s[j] = s[j+1];
s[j+1] = tmp;
}
}
printf("%lf ", s[j]);
}
//=========================================================================
puts("\n\nСумма отрицательных элементов массива:");
for (z=0, i=0; i<n; i++)
{
if (s[i]<0) z+=s[i];
}
printf("%lf", z);
//=========================================================================
puts("\n\nПроизведение элементов между минимальным и максимальным значениями:");
//Максимальный элемент массива
for (max=s[0], i=1; i<n; i++)
if (s[i]>max)
{
max=s[i];
maxS=i;
};
//Минимальный элемент массива:
for (min=s[0], i=1; i<n; i++)
if (s[i]<min)
{
min=s[i];
minS=i;
};
for (w=1, i=0; i<n; i++)
{
if (i>minS && i<maxS) w*=s[i];
};
printf("%lf", w);
//=========================================================================
printf("\n\nPress any key...");
getch();
}Решение задачи: «Вычислить сумму отрицательных элементов массива»
textual
Листинг программы
for (max=s[0], i=1; i<n; i++)
if (s[i]>max)
{
max=s[i];
maxS=i;
};
//Минимальный элемент массива:
for (min=s[0], i=1; i<n; i++)
if (s[i]<min)
{
min=s[i];
minS=i;
};