Отсортировать массив по возрастанию и вычислить сумму отрицательных элементов - C (СИ)
Формулировка задачи:
Помогите, пожалуйста отсортировать массив по возрастанию.
Вот задание :
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
-сумму отрицательных элементов массива;
-произведение элементов массива, расположенных между максимальным и минимальным элементами.
Упорядочить элементы массива по возрастанию.
Первые 2 сделал. Осталась сортировка. Помогите, если не трудно.
#include "stdio.h"
#include "locale.h"
#include "windows.h"
int main ()
{
const int n = 5;
setlocale (LC_ALL, "Russian");
int iMin = 0;
int iMax = 0;
int m[n];
int max = m[0];
int min = m[0];
int i;
int sum = 0;
int result = 1;
int k;
for ( i = 0; i < n; i++)
{
printf ("m[%d] = ", i);
scanf ("%d", &m[i]);
}
iMax = 0;
iMin = 0;
for ( i = 0; i < n; i++)
{
if (m[i] < 0)
sum += m[i];
}
//.........................................................................................
for ( i = 0; i < n; i++)
{
if (m[i] > max)
{
max = m[i];
iMax = i;
}
if (m[i] < max)
{
max = m[i];
iMin = i;
}
}
if (iMax < iMin)
{
k = iMax;
iMax = iMin;
iMin = k;
}
k = 1;
for (i = iMin +1; i < iMax; i++)
result *= m[i];
//.............................................................................................
printf ("\n Сумма отрицательных элементов = %d", sum);
printf ("\n Произведение = %d", result);
system ("pause");
}Решение задачи: «Отсортировать массив по возрастанию и вычислить сумму отрицательных элементов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int cmp(const void * a, const void * b) {
double d = *(double*)a - *(double*)b;
return ( d < 0.0 ) ? -1 : ( d > 0.0 ) ? 1 : 0;
}
void fill(double * array, size_t count) {
while ( count-- )
*array++ = sin(rand()) * 10.0;
}
void dump(const double * array, size_t count) {
while ( count-- )
printf("%.2f%c", *array++, ( count ) ? ' ' : '\n');
}
#define COUNT (10)
int main(void) {
double array[COUNT];
fill(array, COUNT);
printf("Unsorted:\n");
dump(array, COUNT);
qsort(array, COUNT, sizeof(double), cmp);
printf("Sorted:\n");
dump(array, COUNT);
return 0;
}
Объяснение кода листинга программы
В данном коде:
- Объявлены функции:
- cmp() - функция сравнения, используемая в функции qsort() для сортировки массива.
- fill() - функция заполнения массива случайными числами.
- dump() - функция вывода массива на экран.
- В функции main() объявлен массив array типа double и переменная COUNT типа int, равная 10.
- В функции main() вызваны следующие действия:
- Вызов функции fill() для заполнения массива случайными числами.
- Вывод массива на экран с помощью функции dump() - исходный массив.
- Вызов функции qsort() для сортировки массива с использованием функции сравнения cmp().
- Вывод отсортированного массива на экран с помощью функции dump().
- В конце функции main() возвращается 0, что означает успешное завершение программы.