didri.ru
LIFE в стиле Хай-тек.
MENU
didri.ru » Программирование » Анализ массива: среднее арифметическое четных элементов, наибольшие положительные значения и сортировка по возрастанию квадратов

Анализ массива: среднее арифметическое четных элементов, наибольшие положительные значения и сортировка по возрастанию квадратов

24 апрель 2023, Понедельник
1 413
0

Задача:


Ко мне обратился студент УГНТУ, для помощи:
1. Вычислить среднеарифметическое значение чётных по значению элементов последней четверти массива
2. Найти два наибольших положительных элемента первой трети
3. Упорядочить четные по номеру элементы второй половины массива по возрастанию квадратов

Решение:


Для выполнения всех трех задач на Python, сначала создадим функции для каждой из них, а затем применим их к определенному массиву.
def average_even_last_quarter(arr):
    last_quarter = arr[int(3 * len(arr) / 4):]
    even_elements = [elem for elem in last_quarter if elem % 2 == 0]
    return sum(even_elements) / len(even_elements) if even_elements else 0

def two_largest_positive_first_third(arr):
    first_third = arr[:int(len(arr) / 3)]
    positive_elements = [elem for elem in first_third if elem > 0]
    return sorted(positive_elements)[-2:] if len(positive_elements) > 1 else []

def sort_even_indices_second_half(arr):
    second_half = arr[int(len(arr) / 2):]
    even_indices = [i for i in range(len(second_half)) if i % 2 == 0]
    even_values = [second_half[i] for i in even_indices]
    sorted_values = sorted(even_values, key=lambda x: x ** 2)
    
    for index, value in zip(even_indices, sorted_values):
        second_half[index] = value
    
    return arr[:int(len(arr) / 2)] + second_half

# Пример массива
arr = [5, 3, 8, -2, 7, 6, 12, -1, 9, 0, 15, 20, 3, 10, 14, 18]

avg_even_last_quarter = average_even_last_quarter(arr)
two_largest_first_third = two_largest_positive_first_third(arr)
sorted_arr = sort_even_indices_second_half(arr)

print("Среднее арифметическое четных элементов последней четверти массива:", avg_even_last_quarter)
print("Два наибольших положительных элемента первой трети массива:", two_largest_first_third)
print("Массив с упорядоченными четными по номеру элементами второй половины по возрастанию квадратов:", sorted_arr)


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

Как бы это выглядело на C++


Сначала создадим функции для каждой из них, а затем применим их к определенному массиву.

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

double average_even_last_quarter(const std::vector<int>& arr) {
    int start_index = 3 * arr.size() / 4;
    std::vector<int> even_elements;
    for (int i = start_index; i < arr.size(); ++i) {
        if (arr[i] % 2 == 0) {
            even_elements.push_back(arr[i]);
        }
    }
    return even_elements.empty() ? 0 : std::accumulate(even_elements.begin(), even_elements.end(), 0.0) / even_elements.size();
}

std::vector<int> two_largest_positive_first_third(const std::vector<int>& arr) {
    int end_index = arr.size() / 3;
    std::vector<int> positive_elements;
    for (int i = 0; i < end_index; ++i) {
        if (arr[i] > 0) {
            positive_elements.push_back(arr[i]);
        }
    }
    if (positive_elements.size() < 2) {
        return {};
    }
    std::partial_sort(positive_elements.begin(), positive_elements.begin() + 2, positive_elements.end(), std::greater<int>());
    return {positive_elements[0], positive_elements[1]};
}

std::vector<int> sort_even_indices_second_half(const std::vector<int>& arr) {
    int start_index = arr.size() / 2;
    std::vector<int> second_half(arr.begin() + start_index, arr.end());
    std::vector<int> even_indices;
    for (int i = 0; i < second_half.size(); ++i) {
        if (i % 2 == 0) {
            even_indices.push_back(i);
        }
    }
    std::sort(even_indices.begin(), even_indices.end(), [&](int i1, int i2) { return second_half[i1] * second_half[i1] < second_half[i2] * second_half[i2]; });
    for (int i = 0; i < even_indices.size(); ++i) {
        second_half[even_indices[i]] = arr[start_index + even_indices[i]];
    }
    return std::vector<int>(arr.begin(), arr.begin() + start_index) + second_half;
}

int main() {
    std::vector<int> arr = {5, 3, 8, -2, 7, 6, 12, -1, 9, 0, 15, 20, 3, 10, 14, 18};

    double avg_even_last_quarter = average_even_last_quarter(arr);
    std::vector<int> two_largest_first_third = two_largest_positive_first_third(arr);
    std::vector<int> sorted_arr = sort_even_indices_second_half(arr);

    std::cout << "Среднее арифметическое четных элементов последней четверти массива: " << avg_even_last_quarter << std::endl;
    std::cout << "Два наибольших положительных элемента первой трети массива: ";
    for (int elem : two_largest_first_third) {
        std::cout << elem << ' ';
    }
    std::cout << std::endl;
    std::cout << "Массив с упорядоченными четными по номеру элементами второй половины по возрастанию квадратов: ";
for (int elem : sorted_arr) {
    std::cout << elem << ' ';
}
std::cout << std::endl;

return 0;
}


Теперь можно скопировать код в свой проект, заменить пример массива на свой собственный массив и выполнить код, чтобы увидеть результаты.


Если Вам понравилась статья, рекомендуем:
Что посмотреть в 2025 году: самые ожидаемые фильмы
Ракеты «Хезболлы» прилетели по израильским Хайфа и Тверия


При использовании публикаций обязательно указывайте источник didri.ru.
Вопросы и предложения также принимаются на данный адрес [email protected].
На сайте didri.ru отсутствуют журналы, программы и игры для скачивания.
Калькулятор на языке Python
Калькулятор на языке Python
Как
Python — известный язык программирования. Многие пытаются выучить Python, потому что это очень полезный язык программирования, который в наши дни становится высокооплачиваемым. Причина в его использовании во всех областях ИТ и технологий. Самым
Столы на металлических подстольях в стиле лофт
Столы на металлических подстольях в стиле лофт
Технологии
Покупая столы из массива дерева или камня в стиле лофт, каждое помещение, независимо от того, будет это кухня, зал ресторана или столовая, сможет наполниться атмосферой комфорта и тепла. А если это письменные столы, то они всегда свидетельствуют о
Виды монтажа печатных плат
Виды монтажа печатных плат
Помощь по технике
Современные тенденции при изготовлении электронного оборудования направлены одновременно на достижение компактности и максимальной функциональности. В силу этого микросхемы – основные элементы управления техникой – становятся все меньше и сложнее.
Основы кодирования на практике: вычисляем '2+2=4' на пяти популярных языках программирования
Основы кодирования на практике: вычисляем '2+2=4' на пяти популярных языках программирования
Программирование
Решение простых математических операций, таких как сложение, является базовым примером кодирования на разных языках программирования. В этой статье мы рассмотрим, как вычислить "2+2=4" на популярных языках программирования, таких как
Первые новости о Shenmue III
Первые новости о Shenmue III
Игры
В июне стало известно, что Shenmue III появится в продаже не раньше второй половины 2018 года. Поклонников игры эта информация огорчила, но недавнее заявление геймдизайнера Ю Судзуки позволило предположить
Химические элементы, помогающие  в похудении
Химические элементы, помогающие в похудении
Я Девушка
Стремясь к достижению идеальной фигуры нужно учесть множество факторов. Это и физические упражнения, и диетическое питание, и сбалансированная подача организму химических элементов, без которых мечты об избавление от лишних килограммов так и
Добавить комментарий
Комментарии (0)
Прокомментировать
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Войти через: