Отсортировать массив по возрастанию и вычислить сумму отрицательных элементов - 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;
}

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

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

  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
Похожие ответы