С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/55: Рейтинг темы: голосов - 55, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 26
1

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

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

Author24 — интернет-сервис помощи студентам
Доброго времени суток,есть задача которую мне необходимо решить, однако я не имею представления как ее решать(я нуб) так что прошу о помощи(если не составит труда то в коде добавить комментарии,ибо хочу еще сам разобратся).
Вот задача:
Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами, включая минимальный и максимальный элементы и разместить в новом динамическом массиве. Вывести размер и содержимое массива.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2016, 17:05
Ответы с готовыми решениями:

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

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

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

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

5
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 26
21.11.2016, 18:33  [ТС] 3
Прошу прощения,но нельзя ли это как-то проще решить эту задачу?(а конкретнее используя одномерный динамический массив)(я не понял ничего в этом коде).

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

Добавлено через 20 часов 48 минут
MrGluck, а где тут динамический массив?(и еще если не трудно не мог бы сделать так чтобы юзер сам вбивал данные массива с клавы)(прости за то что сильно беспокою)
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2016, 21:24
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru