Форум программистов, компьютерный форум CyberForum.ru

Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами - C++

Восстановить пароль Регистрация
 
Kesuki
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 10
21.11.2016, 17:05     Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами #1
Доброго времени суток,есть задача которую мне необходимо решить, однако я не имею представления как ее решать(я нуб) так что прошу о помощи(если не составит труда то в коде добавить комментарии,ибо хочу еще сам разобратся).
Вот задача:
Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами, включая минимальный и максимальный элементы и разместить в новом динамическом массиве. Вывести размер и содержимое массива.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 17:05     Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Посмотрите здесь:

C++ Переставить в обратном порядке элементы матрицы, расположенные между последним и минимальным
Обнулить элементы массива, расположенные между его минимальным и максимальным элементами C++
Как переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами C++
Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами C++
C++ Дан массив размера N. Обнулить элементы массива, расположенные между его минимальным и максимальным элементами
C++ Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Переставить в обратном порядке элементы массива, расположенные между минимальным и максимальным элементами C++
Переставить в обратном порядке элементы массива, расположенные между элементами AK и AL включительно C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
21.11.2016, 18:13     Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    using container = std::vector<int>;
    using crit = container::const_reverse_iterator;
    container a = {2, 3, 4, 5, 1, 6, 7, 8, 9, 5}, b;
    auto pairIt = std::minmax_element(a.cbegin(), a.cend());
    if (pairIt.second < pairIt.first)
        std::swap(pairIt.first, pairIt.second);
    ++pairIt.second;
    std::copy(a.cbegin(), pairIt.first, std::back_inserter(b));
    std::copy(crit(pairIt.second), crit(pairIt.first), std::back_inserter(b));
    std::copy(pairIt.second, a.cend(), std::back_inserter(b));
    std::copy(b.cbegin(), b.cend(), std::ostream_iterator<int>(std::cout, " "));
}
Kesuki
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 10
21.11.2016, 18:33  [ТС]     Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами #3
Прошу прощения,но нельзя ли это как-то проще решить эту задачу?(а конкретнее используя одномерный динамический массив)(я не понял ничего в этом коде).

Добавлено через 21 секунду
MrGluck, Прошу прощения,но нельзя ли это как-то проще решить эту задачу?(а конкретнее используя одномерный динамический массив)(я не понял ничего в этом коде).
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
21.11.2016, 19:24     Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
 
int main()
{
    const int N = 10, a[N] = {2, 3, 4, 5, 1, 6, 7, 8, 9, 5};
    int b[N], iMin = 0, iMax = 0, first, second, bIndex = 0;
    for (int i=1; i < N; i++)
    {
        if (a[iMin] > a[i])
            iMin = i;
        if (a[iMax] < a[i])
            iMax = i;
    }
 
    if (iMin < iMax)
    {
        first = iMin;
        second = iMax;
    }
    else
    {
        first = iMax;
        second = iMin;
    }
 
    for (int i=0; i < first; i++)
        b[bIndex++] = a[i];
    for (int i=second; i >= first; i--)
        b[bIndex++] = a[i];
    for (int i=second+1; i < N; i++)
        b[bIndex++] = a[i];
 
    for (int i=0; i < N; i++)
        std::cout << b[i] << " ";
}
Kesuki
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 10
22.11.2016, 16:13  [ТС]     Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами #5
MrGluck, Спасибо тебе!

Добавлено через 20 часов 48 минут
MrGluck, а где тут динамический массив?(и еще если не трудно не мог бы сделать так чтобы юзер сам вбивал данные массива с клавы)(прости за то что сильно беспокою)
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
23.11.2016, 21:24     Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
 
int main()
{
    int N, iMin = 0, iMax = 0, first, second, bIndex = 0;
 
    std::cout << "Enter N: ";
    std::cin >> N;
    int *a = new int[N]; // динамически выделяем память под массив
 
    for (int i=0; i < N; i++)
    {
        std::cout << "Enter a[" << i << "]: ";
        std::cin >> a[i];
        if (a[iMin] > a[i])
            iMin = i;
        if (a[iMax] < a[i])
            iMax = i;
    }
 
    if (iMin < iMax)
    {
        first = iMin;
        second = iMax;
    }
    else
    {
        first = iMax;
        second = iMin;
    }
 
    int *b = new int[N];
    for (int i=0; i < first; i++)
        b[bIndex++] = a[i];
    for (int i=second; i >= first; i--)
        b[bIndex++] = a[i];
    for (int i=second+1; i < N; i++)
        b[bIndex++] = a[i];
 
    for (int i=0; i < N; i++)
        std::cout << b[i] << " ";
 
    delete[] a; // освобождаем память
    delete[] b;
}
Yandex
Объявления
23.11.2016, 21:24     Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Ответ Создать тему
Опции темы

Текущее время: 21:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru