Как реализовать алгоритм, который будет выводить в консоль задаваемое количество максимумов и минимумов пользователем ? на C

Дан набор вещественных чисел, результатов некоторого измерения. Исключив статистические выбросы (например, по два наибольших и наименьших значения), найти математическое ожидание и дисперсию. Сравнить с мат. ожиданием и дисперсией, вычисленным по первоначальной выборке (без исключения выбросов).

`

#include <stdio.h>
#include <conio.h>
#include<math.h>
#include<locale.h>
#include<math.h>
#include<iostream>
using namespace std;

int main() {
    setlocale(LC_ALL, "RUS");

    float* x;
    int n;
    double sum0 = 0;
    double sum1 = 0;
    double disp;
    float expv;

    printf("Введите количество планируемых измерений: ");
    scanf_s("%d", &n);
    printf("===================================================");

    printf("\nВведите ваши измерения: ");
    x = new float[n];

    for (int i = 0; i < n; i++) {
        cin >> x[i];
        sum0 += x[i];
    }
    expv = sum0 / n;
    printf("Математическое ожидание: %lg\n", expv);

    for (int j = 0; j < n; j++) {
        sum1 += pow((x[j] - expv), 2);
    }
    disp = sum1 / n;
    printf("Дисперсия: %lg", disp);
}

`


Ответы (1 шт):

Автор решения: Opus
void delete_min(float* arr, int& n) {
    // Нахождение минимумов 
    int i, iMin = 0;
    for (i = 1; i < n; ++i)
        if (arr[i] < arr[iMin])
            iMin = i;
    // Удаление минимумов 
    for (i = iMin; i < n - 1; ++i)
        arr[i] = arr[i + 1];
    --n;
}

void delete_max(float* arr, int& n) {
    // Нахождение максимумов
    int i, iMax = 0;
    for (i = 1; i < n; ++i)
        if (arr[i] > arr[iMax])
            iMax = i;
    // Удаление максимумов
    for (i = iMax; i < n - 1; ++i)
        arr[i] = arr[i + 1];
    --n;
}
→ Ссылка