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

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

Войти
Регистрация
Восстановить пароль
 
Dimiks
Сообщений: n/a
#1

наименьший, самый редкий элемент из массива чисел - C++

09.05.2012, 12:38. Просмотров 489. Ответов 2
Метки нет (Все метки)

Всем добрый день.
Необходимо найти наименьший, самый редкий элемент массива чисел (пусть int).
Например среди 1, 1, 1, 2, 4, 3, 2, 1, 4, 5 - самыми редкими будут числа 3 и 5, наименьшим, очевидно, тройка. Очень желательна реализация с использованием STL.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2012, 12:38     наименьший, самый редкий элемент из массива чисел
Посмотрите здесь:
Найти самый наименьший элемент в матрице, и найти сумму столбца который стоит этот наименьший найденный элемент C++
C++ Найти второй самый большой элемент массива и второй самый маленький элемент массива
В каждой из заданных матриц поменять местами строки, содержащие самый и наименьший элемент C++
Составить рекурсивную функцию, которая находит наименьший элемент массива из реальных чисел C++
C++ Создать одномерный массив, найти наименьший элемент 3-го столбца, поменять местами наименьший элемент элементы
C++ Создать новый массив, найти наименьший элемент 3-го столбца, поменять местами наименьший элемент 3-го столбца и элемент a23
C++ Найти самый большой элемент Массива
C++ Найти наименьший элемент массива X среди тех, которые не являются элементами массива Y(X,Y-одномерные массивы)
C++ Наибольший и наименьший элемент массива
C++ Определить наименьший элемент массива
Определите наименьший элемент массива C++
C++ Найти наименьший элемент массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
1928 / 1194 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.05.2012, 12:49     наименьший, самый редкий элемент из массива чисел #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
#include <iostream>
#include <vector>
#include <map>
#include <cstddef>
#include <algorithm>
 
typedef std::pair< int, int > iPair;
 
bool pred( const iPair &a, const iPair &b )
{
    if ( a.second != b.second )
        return a.second < b.second;
        
    return a.first < b.first;
}
 
int main()
{ 
    std::vector< int > arr = { 1, 1, 1, 2, 4, 3, 3, 2, 1, 4, 5 };
    
    std::map< int, int > map;
    for ( size_t i = 0; i < arr.size(); ++i )
        ++map[ arr[i] ];
        
    std::cout << std::min_element( map.begin(), map.end(), pred )->first;
}
MrGluck
Модератор
Эксперт CЭксперт С++
7158 / 4324 / 630
Регистрация: 29.11.2010
Сообщений: 11,746
09.05.2012, 13:09     наименьший, самый редкий элемент из массива чисел #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
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <iterator>
 
int find_min_unique(std::vector<int>::iterator first, std::vector<int>::iterator last)
{
    int c = std::count(first, last, *first);
    return  (c == 1 ? *first : find_min_unique(first + c,  last) );
} 
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> urd(0, 10);
    std::vector <int> v(15);
    std::generate(v.begin(), v.end(), [&gen, &urd] {return urd(gen);} );
    std::sort(v.begin(), v.end());
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout<< std::endl<< find_min_unique(v.begin(), v.end());
    return 0;
}
Вот для массивов:
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
#include <iostream>
#include <algorithm>
#include <random>
#include <iterator>
 
int find_min_unique(int *first, int *last)
{
    int c = std::count(first, last, *first);
    return  (c == 1 ? *first : find_min_unique(first + c,  last) );
} 
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> urd(0, 10);
    const int N = 15; 
    int arr[N];
    std::generate(arr, arr + N, [&gen, &urd] {return urd(gen);} );
    std::sort(arr, arr + N);
    std::copy(arr, arr + N, std::ostream_iterator<int>(std::cout, " "));
    std::cout<< std::endl<< find_min_unique(arr, arr + N);
    return 0;
}
Ответ Создать тему
Опции темы

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