Отсортировать массив по возрастанию и вычислить сумму отрицательных элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста отсортировать массив по возрастанию. Вот задание : В одномерном массиве, состоящем из n вещественных элементов, вычислить: -сумму отрицательных элементов массива; -произведение элементов массива, расположенных между максимальным и минимальным элементами. Упорядочить элементы массива по возрастанию. Первые 2 сделал. Осталась сортировка. Помогите, если не трудно.
Листинг программы
  1. #include "stdio.h"
  2. #include "locale.h"
  3. #include "windows.h"
  4. int main ()
  5. {
  6. const int n = 5;
  7. setlocale (LC_ALL, "Russian");
  8. int iMin = 0;
  9. int iMax = 0;
  10. int m[n];
  11. int max = m[0];
  12. int min = m[0];
  13. int i;
  14. int sum = 0;
  15. int result = 1;
  16. int k;
  17. for ( i = 0; i < n; i++)
  18. {
  19. printf ("m[%d] = ", i);
  20. scanf ("%d", &m[i]);
  21. }
  22. iMax = 0;
  23. iMin = 0;
  24. for ( i = 0; i < n; i++)
  25. {
  26. if (m[i] < 0)
  27. sum += m[i];
  28. }
  29. //.........................................................................................
  30. for ( i = 0; i < n; i++)
  31. {
  32. if (m[i] > max)
  33. {
  34. max = m[i];
  35. iMax = i;
  36. }
  37. if (m[i] < max)
  38. {
  39. max = m[i];
  40. iMin = i;
  41. }
  42. }
  43. if (iMax < iMin)
  44. {
  45. k = iMax;
  46. iMax = iMin;
  47. iMin = k;
  48. }
  49. k = 1;
  50. for (i = iMin +1; i < iMax; i++)
  51. result *= m[i];
  52. //.............................................................................................
  53.  
  54. printf ("\n Сумма отрицательных элементов = %d", sum);
  55. printf ("\n Произведение = %d", result);
  56.  
  57. system ("pause");
  58. }

Решение задачи: «Отсортировать массив по возрастанию и вычислить сумму отрицательных элементов»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5.  
  6. int cmp(const void * a, const void * b) {
  7.     double d = *(double*)a - *(double*)b;
  8.    
  9.     return ( d < 0.0 ) ? -1 : ( d > 0.0 ) ? 1 : 0;
  10. }
  11.  
  12. void fill(double * array, size_t count) {
  13.     while ( count-- )
  14.         *array++ = sin(rand()) * 10.0;
  15. }
  16.  
  17. void dump(const double * array, size_t count) {
  18.     while ( count-- )
  19.         printf("%.2f%c", *array++, ( count ) ? ' ' : '\n');
  20. }
  21.  
  22. #define COUNT (10)
  23.  
  24. int main(void) {
  25.     double array[COUNT];
  26.    
  27.     fill(array, COUNT);
  28.     printf("Unsorted:\n");
  29.     dump(array, COUNT);
  30.     qsort(array, COUNT, sizeof(double), cmp);
  31.     printf("Sorted:\n");
  32.     dump(array, COUNT);
  33.    
  34.     return 0;
  35. }

Объяснение кода листинга программы

В данном коде:

  1. Объявлены функции:
    • cmp() - функция сравнения, используемая в функции qsort() для сортировки массива.
    • fill() - функция заполнения массива случайными числами.
    • dump() - функция вывода массива на экран.
  2. В функции main() объявлен массив array типа double и переменная COUNT типа int, равная 10.
  3. В функции main() вызваны следующие действия:
    • Вызов функции fill() для заполнения массива случайными числами.
    • Вывод массива на экран с помощью функции dump() - исходный массив.
    • Вызов функции qsort() для сортировки массива с использованием функции сравнения cmp().
    • Вывод отсортированного массива на экран с помощью функции dump().
  4. В конце функции main() возвращается 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы