profile
Размещено 5 лет назад по предмету Информатика от oganes70

Как заменить все максимальные элементы на минимальные в вектор (использовать только алгоритмы стандартной библиотеки шаблонов):
На С++.

  1. Ответ на вопрос
    Ответ на вопрос дан csharp

    Первым делом нужно выяснить общность вопроса.

    Нам нужно заменить максимальные элементы (максимальные элементы - это одинаковые элементы с максимальным значением в векторе) минимальным.

    Как наиболее проще это сделать?

    Для начала нам нужно найти минимальный и максимальный элементы. Сразу отбрасываем варианты со всякими поисками минимумов / максимумов и вспоминаем о сортировке. Для удобства - по возрастанию, так как нам не нужно проходить весь вектор до конца. После сортировки максимальные элементы будут вначале.

    Итак, мы отсортировали вектор, максимальные элементы вначале, а минимальный - в конце. Описываем цикл:

    • for (int i = 0, temp = arr[i]; i < arr.size(); ++i)

    Здесь стоит пояснить: i - итератор, это понятно, temp же - целочисленная переменная, с начала цикла хранящая элемент вектора под индексом 0: arr[0], то есть максимальный элемент.

    Внутри цикла мы проверяем, является ли i-й элемент максимальным, то есть, по сути, проходим все максимальные элементы с самого начала:

    1. if (arr[i] == temp)
    2. {
    3.    arr[i] = arr[arr.size() - 1];
    4. }

    Здесь arr[arr.size() - 1] - всегда минимальный элемент.

    Рассмотрим на примере

    Вектор после ввода 7 элементов: -1, 0, 8, -1, 8, 6, 4.

    После сортировки: 8, 8, 6, 4, 0, -1, -1

    Начало цикла:

    i = 0: temp = arr[i] = arr[0] = 8

    arr[0] == temp? ⇒ 8 == 8? true ⇒ arr[0] = arr[7 - 1] = -1

    i = 1: temp = 8

    arr[1] == temp? ⇒ 8 == 8? true ⇒ arr[1] = arr[7 - 1] = -1

    i = 2: temp = 8

    arr[2] == temp? ⇒ 6 == 8? false ⇒ выход из цикла

    Вектор в конце: -1 -1 6 4 0 -1 -1

    Код на языке C++

    1. #include <iostream>
    2. #include <vector>
    3. #include <algorithm>
    4. int main()
    5. {
    6.    int arrLength = 0;
    7.    std::vector<int> arr;
    8.    std::cout << "Input array length: ";
    9.    do
    10.    {
    11.        std::cin >> arrLength;
    12.        if (arrLength <= 0)
    13.        {
    14.            std::cout << "Error: vector size must be natural!" << std::endl;
    15.        }
    16.    } while (arrLength <= 0);
    17.    for (int i = 0, inputValue = 0; i < arrLength; ++i)
    18.    {
    19.        std::cout << "Input element: ";
    20.        std::cin >> inputValue;
    21.        arr.push_back(inputValue);
    22.    }
    23.    std::sort(arr.rbegin(), arr.rend());
    24.    std::cout << "Array before: ";
    25.    for (int i = 0; i < arr.size(); ++i)
    26.    {
    27.        std::cout << arr[i] << " ";
    28.    }
    29.    for (int i = 0, temp = arr[i]; i < arr.size(); ++i)
    30.    {
    31.        if (arr[i] == temp)
    32.        {
    33.            arr[i] = arr[arr.size() - 1];
    34.        }
    35.        else break;
    36.    }
    37.    std::cout << "nArray after: ";
    38.    for (int i = 0; i < arr.size(); ++i)
    39.    {
    40.        std::cout << arr[i] << " ";
    41.    }
    42.    return 0;
    43. }
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.