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