Отсортировать массив по возрастанию и вычислить сумму отрицательных элементов - 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, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д