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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kesuki
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 22
#1

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

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

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

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

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

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

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

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

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

5
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
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
Сообщений: 22
21.11.2016, 18:33  [ТС] #3
Прошу прощения,но нельзя ли это как-то проще решить эту задачу?(а конкретнее используя одномерный динамический массив)(я не понял ничего в этом коде).

Добавлено через 21 секунду
MrGluck, Прошу прощения,но нельзя ли это как-то проще решить эту задачу?(а конкретнее используя одномерный динамический массив)(я не понял ничего в этом коде).
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
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
Сообщений: 22
22.11.2016, 16:13  [ТС] #5
MrGluck, Спасибо тебе!

Добавлено через 20 часов 48 минут
MrGluck, а где тут динамический массив?(и еще если не трудно не мог бы сделать так чтобы юзер сам вбивал данные массива с клавы)(прости за то что сильно беспокою)
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,017
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2016, 21:24
Привет! Вот еще темы с ответами:

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

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

Элементы массива, расположенные между его минимальным и максимальным элементами (не включая минимальный и макс - C++
Здравствуйте,есть задача которую я не имею представления как ее решать(я нуб).Поэтому, прошу о помощи(если не составит труда то в коде...

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


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
23.11.2016, 21:24
Ответ Создать тему
Опции темы

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