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

Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива - C++

Восстановить пароль Регистрация
 
ms-gambit
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 4
14.01.2013, 23:34     Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива #1
Люди добрые, помогите решить задачку.
Дан одномерный массив А, состоящий из целых чисел. Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2013, 23:34     Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива
Посмотрите здесь:

Обнулить элементы массива, расположенные между его минимальным и максимальным элементами C++
Как переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами C++
Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами C++
C++ Дан массив размера N. Обнулить элементы массива, расположенные между его минимальным и максимальным элементами
C++ Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
15.01.2013, 00:45     Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива #2
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
46
47
48
49
50
51
52
#include <iostream>
 
using std::cout;
 
int main(int argc, char* argv[])
{
    const int n = 10;
    int a[n] = { 23, 67, 92, 78, 34, 45, 56, 10, 43, 12 };
 
    int min = 0;
    int max = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[min] > a[i])
        {
            min = i;
        }
        if (a[max] < a[i])
        {
            max = i;
        }
    }
 
    int m;
    int* b;
    if (min < max)
    {
        m = max - min - 1;
        b = new int[m];
        for (int i = 0; i < m; i++)
        {
            b[i] = a[min + i + 1];
        }
    }
    else
    {
        m = min - max - 1;
        b = new int[m];
        for (int i = 0; i < m; i++)
        {
            b[i] = a[max + i + 1];
        }
    }
 
    cout << "Array b:" << '\n';
    for (int i = 0; i < m; i++)
    {
        cout << b[i] << " ";
    }
 
    return 0;
}
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
15.01.2013, 07:58     Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива #3
Игорь Миронюк, не забывайте использовать delete

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <ctime>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    std::srand(std::time(0));
    std::vector<int> a;
    for (std::size_t i = 0; i < 10; i++)
        a.push_back(std::rand() % 20);
    std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::vector<int>::const_iterator max = std::max_element(a.begin(), a.end());
    std::vector<int>::const_iterator min = std::min_element(a.begin(), a.end());
    std::vector<int> b(max > min ? min + 1 : max + 1, max < min ? min : max);
    std::copy(b.begin(), b.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    return 0;
}
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
15.01.2013, 13:49     Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива #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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
 
using std::cout;
 
int main(int argc, char* argv[])
{
    const int n = 10;
    int a[n] = { 23, 67, 92, 78, 34, 45, 56, 10, 43, 12 };
 
    int min = 0;
    int max = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[min] > a[i])
        {
            min = i;
        }
        if (a[max] < a[i])
        {
            max = i;
        }
    }
 
    int m;
    int* b;
    if (min < max)
    {
        m = max - min - 1;
        b = new int[m];
        for (int i = 0; i < m; i++)
        {
            b[i] = a[min + i + 1];
        }
    }
    else
    {
        m = min - max - 1;
        b = new int[m];
        for (int i = 0; i < m; i++)
        {
            b[i] = a[max + i + 1];
        }
    }
 
    cout << "Array b:" << '\n';
    for (int i = 0; i < m; i++)
    {
        cout << b[i] << " ";
    }
    delete[] b;
 
    return 0;
}
Добавлено через 1 минуту
Патрик, спасибо.
ms-gambit
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 4
22.01.2013, 22:41  [ТС]     Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива #5
спасибо, ребята
Yandex
Объявления
22.01.2013, 22:41     Получить массив В, содержащий элементы массива А, расположенные между максимальным и минимальным элементами массива
Ответ Создать тему
Опции темы

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