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

список мин и макс элемент - C++

Восстановить пароль Регистрация
 
Vldslv
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 78
08.07.2013, 23:56     список мин и макс элемент #1
Дан список из целых чисел, найти первое из всех минимальных значений и последнее из всех максимальных, при этом удалить все значения между ними.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 23:56     список мин и макс элемент
Посмотрите здесь:

C++ Массив. Макс и мин элемент.Шаблоны и функции.
Поменять местами мин и макс элемент в каждой строке C++
Определить макс и мин цифры C++
Работа со стеком (найти мин и макс элемент) C++
посчитать макс и мин элемент массива ,сумма между 1-ым и 2-ым положит элементом и упорядочить по определённому принципу C++
C++ Ошибка в строке содержащую мин и макс элемент массива
C++ Мин-макс в списке
Найти макс. элемент среди отрицательных и мин. элемент среди положительных элементов массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
09.07.2013, 12:08     список мин и макс элемент #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
#include <iostream>
#include <list>
#include <algorithm>
#include <string>
#include <sstream>
#include <iterator>
 
int main()
{
    std::string str( "1 2 -3 0 4 5 12 6 7" );
    std::istringstream ist( str );
    std::list < int > lst;
 
    std::copy( std::istream_iterator < int >( ist ), std::istream_iterator < int >(), std::inserter( lst, lst.begin() ) );
    std::copy( std::begin( lst ), std::end( lst ), std::ostream_iterator < int >( std::cout, " " ) );
    std::cout << std::endl;
 
    std::list < int >::const_iterator itMin = std::find( lst.cbegin(), lst.cend(), *std::min_element( lst.begin(), lst.end() ) );
    std::list < int >::const_reverse_iterator itMax = std::find( lst.crbegin(), lst.crend(), *std::max_element( lst.begin(), lst.end() ) );
 
    lst.erase( itMin, itMax.base() );
 
    std::copy( std::begin( lst ), std::end( lst ), std::ostream_iterator < int >( std::cout, " " ) );
    std::cout << std::endl;
 
    return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
09.07.2013, 19:24     список мин и макс элемент #3
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
#include <cstdlib>
#include <ctime>
#include <list>
#include <random>
#include <functional>
#include <iterator>
#include <algorithm>
#include <iostream>
 
using namespace std;
 
int main()
{        
    list<int> lst;
    generate_n(back_inserter(lst), 10,
        bind(uniform_int_distribution<>(0, 10), mt19937(time(nullptr))));
    
    for(auto item : lst)
        cout << item << ' ';
    cout << '\n';
    
    auto it_min_first = min_element(lst.begin(), lst.end());
    auto it_max_last = prev(max_element(lst.rbegin(), lst.rend()).base());
    
    const auto dist = distance(lst.begin(), it_max_last) - distance(lst.begin(), it_min_first);
    if(abs(dist) > 1) // если между минимальным и максимальным есть хотя бы один элемент
    {
        if(dist < 0) // если максимальный расположен перед минимальным
            lst.erase(next(it_max_last), it_min_first);
        else
            lst.erase(next(it_min_first), it_max_last);
    }
    
    for(auto item : lst)
        cout << item << ' ';
    cout << '\n';    
}
Yandex
Объявления
09.07.2013, 19:24     список мин и макс элемент
Ответ Создать тему
Опции темы

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