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

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

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

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

09.05.2012, 12:38. Просмотров 493. Ответов 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++
Даны две матрицы А и В одинакового порядка N. В каждой из заданных матриц поменять местами строки, содержащие самый и наименьший элемент

Составить рекурсивную функцию, которая находит наименьший элемент массива из реальных чисел - C++
double min(double* arr, int n); Примеры double arr = {4.1, 2.0, 5.3, 7.2}; min(arr, 4); // -> 2.0 Заранее благодарю

Создать одномерный массив, найти наименьший элемент 3-го столбца, поменять местами наименьший элемент элементы - C++
Дана матрица А(5,3) 1 Создать новый одномерный массив,каждый элемент которого равен среднему арифметическому элементов соответствующей...

Создать новый массив, найти наименьший элемент 3-го столбца, поменять местами наименьший элемент 3-го столбца и элемент a23 - C++
1 Создать новый одномерный массив , каждый элемент которого равен среднему арифметическому элементов соответствующей строки данной матрицы....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
diagon
Higher
1929 / 1195 / 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;
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,928
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;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2012, 13:09
Привет! Вот еще темы с ответами:

Найти самый большой элемент Массива - C++
Помогите с заданием не как не могу сообразить С помощью датчика случайных чисел сформировать два массива X и Y размерностью 100 и...

Найти наименьший элемент массива X среди тех, которые не являются элементами массива Y(X,Y-одномерные массивы) - C++
Всем добрый день..помогите решить 6 задач .ничего не понимаю в этом языке поэтому где можно и нужно пишите пожалуйста комментарии по ходу...

Найти наименьший элемент массива - C++
Завадання: Дана інформація про п'ять кімнатах у гуртожитку. Запис має вигляд: прізвища, номер кімнати, факультет, площа. Вивести дані про...

Определите наименьший элемент массива - C++
Дан трехмерный массив Z(n,m,k) случайных целых чисел из интервала (200,300). Определите наименьший элемент массива. Добавлено через 3...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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