Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Kesuki
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 27
1

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

21.11.2016, 17:05. Просмотров 778. Ответов 5
Метки нет (Все метки)

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

Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера 10. Переставить в обратном порядке элементы массива,...

Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера 10. Переставить в обратном порядке элементы массива,...

Как переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Подскажите как реализовать перестановку элементов массива в заданом промежутке?...

Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера 10. Переставить в обратном порядке элементы массива,...

Переставить в обратном порядке элементы массива, расположенные между минимальным и максимальным элементами
Дан одномерный массив. Переставить в обратном порядке элементы массива,...

5
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
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, " "));
}
0
Kesuki
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 27
21.11.2016, 18:33  [ТС] 3
Прошу прощения,но нельзя ли это как-то проще решить эту задачу?(а конкретнее используя одномерный динамический массив)(я не понял ничего в этом коде).

Добавлено через 21 секунду
MrGluck, Прошу прощения,но нельзя ли это как-то проще решить эту задачу?(а конкретнее используя одномерный динамический массив)(я не понял ничего в этом коде).
0
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
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] << " ";
}
1
Kesuki
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 27
22.11.2016, 16:13  [ТС] 5
MrGluck, Спасибо тебе!

Добавлено через 20 часов 48 минут
MrGluck, а где тут динамический массив?(и еще если не трудно не мог бы сделать так чтобы юзер сам вбивал данные массива с клавы)(прости за то что сильно беспокою)
0
MrGluck
Модератор
Эксперт CЭксперт С++
8088 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,405
23.11.2016, 21:24 6
Лучший ответ Сообщение было отмечено Kesuki как решение

Решение

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;
}
0
23.11.2016, 21:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2016, 21:24

Ввести одномерный массив А , вывести его. Переставить в обратном порядке все элементы между максимальным из отрицательных и минимальным элементами
Ввести одномерный массив А , вывести его. Переставить в обратном порядке все...

Переставить в обратном порядке элементы массива, расположенные между элементами AK и AL включительно
Mассив A размер N числа K и L (1 ≤ K &lt; L ≤ N). Переставить в обратном порядке,...

Обнулить элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера N. Обнулить элементы массива, расположенные между его...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru