Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/124: Рейтинг темы: голосов - 124, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 45

Определить количество максимальных элементов в массиве.

26.08.2011, 19:26. Показов 25450. Ответов 88
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан одномерный массив. Определить количество максимальных элементов в массиве.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.08.2011, 19:26
Ответы с готовыми решениями:

Вычислить количество максимальных элементов в массиве
Вычислить количество максимальных элементов в массиве Помогите пожалуйста

Определить индекс первого из максимальных элементов в массиве
Пожалуйста, решите те задачи которые можете: 1).Сортировка выбором предполагает использование трёх приёмов. Первый - нахождение...

Написать функцию, которая вычисляет количество максимальных элементов в массиве
#include <iostream> using namespace std; int main() { int n, max, k; cout << "Enter the dimension of the array:\n"; ...

88
Заблокирован
29.08.2011, 18:33
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Зачем здесь typedef?

По-моему, в этой теме первым появилось решение alex_x_x'а. Да и ничего сверхестественного в Вашем решении нет, я когда увидел эту тему сразу подумал о решении схожим с решением alex_x_x'а, так что ничего оригинального в Вашем подходе нет, чтобы так им кичиться.
А чего "сверхестественного" вы ждете?! Совершенно непонятно.
Что касается временной хронологии, то как раз первым здесь появилась моя ссылка на другую аналогичную тему, где был представлен мой алгоритм.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.08.2011, 19:11
Цитата Сообщение от Сыроежка Посмотреть сообщение
Мой код профессиональный
А мой - нет!
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 <stdio.h>
    
int * max_element(const int * arr, size_t size){
    return ( size < 2 ) ? (int*)arr : ( *arr < *(arr + size - 1) ) ? max_element(arr + 1, size - 1) : max_element(arr, size - 1);
}
 
size_t count(const int * arr, size_t size, int val){
    return ( size ) ? ( *arr == val ) + count(arr + 1, size - 1, val) : 0;
}
 
void dump(const int * arr, size_t size){
    while ( size-- )
        printf("%d%c", *arr++, ( size ) ? ' ' : '\n');
}
 
#define SIZE 10
 
int main(void){
    int arr[SIZE] = { 1, 3, 5, 3, 2, 5, 4, 3, 1, 2 }, me = *max_element(arr, SIZE);
    
    printf("Array: ");
    dump(arr, SIZE);
    printf("Max element %d meets %d times.\n", me, count(arr, SIZE, me));
    
    return 0;
}


Вот ещё до кучи...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <map>
#include <algorithm>
#include <iterator>
    
int main(){
    const int size(10);
    int arr[size] = { 1, 3, 5, 3, 2, 5, 4, 3, 1, 2 };
    
    std::cout << "Array: ";
    std::copy(arr, arr + size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::map<int, int> map;
    for ( int i = 0; i < size; ++i )
        map[arr[i]]++;
    std::cout << "Max element " << map.rbegin()->first << " meets " << map.rbegin()->second << " times." << std::endl;
    
    return 0;
}
1
Заблокирован
29.08.2011, 19:33
Цитата Сообщение от easybudda Посмотреть сообщение
А мой - нет!
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 <stdio.h>
    
int * max_element(const int * arr, size_t size){
    return ( size < 2 ) ? (int*)arr : ( *arr < *(arr + size - 1) ) ? max_element(arr + 1, size - 1) : max_element(arr, size - 1);
}
 
size_t count(const int * arr, size_t size, int val){
    return ( size ) ? ( *arr == val ) + count(arr + 1, size - 1, val) : 0;
}
 
void dump(const int * arr, size_t size){
    while ( size-- )
        printf("%d%c", *arr++, ( size ) ? ' ' : '\n');
}
 
#define SIZE 10
 
int main(void){
    int arr[SIZE] = { 1, 3, 5, 3, 2, 5, 4, 3, 1, 2 }, me = *max_element(arr, SIZE);
    
    printf("Array: ");
    dump(arr, SIZE);
    printf("Max element %d meets %d times.\n", me, count(arr, SIZE, me));
    
    return 0;
}
Можно было бы возвращаемое значение из функции max_element сделать таким же, как и параметр массива, то есть const int * и не далать приведение типов (int*)arr Так как нет большого смысла возвращать не константную ссылку, так как в вашем алгоритме нет определенности, какой именно максимальный элемент последовательности возвращается. То есть если бы вы могли гарантировать, что ваша функция возвращает первый максимальный элемент в последовательности, или напротив, самый последний, то тогда пользователь мог бы воспользоваться не константным указателем, так как он представляет, с каким именно элементом он имеет дело. А так - это гадание на кофейной гуще.

А, возможно, я ошибся, и у вас всегда возвращается последний максимальный элемент, так как в случае равенства элементов, вы предпочитаете брать подмассив, исключая первый элемент.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
29.08.2011, 19:41
Цитата Сообщение от Сыроежка Посмотреть сообщение
Так как нет большого смысла возвращать не константную ссылку, так как в вашем алгоритме нет определенности, какой именно максимальный элемент последовательности возвращается.
Наверное, с высоты профессионализма такие мелочи и не видны, но вообще-то в С функции, возвращающие константные значения - UB (не мне рассказывать Вам, профессионалу, что это значит). А определённость как раз есть - функция возвращает указатель (да-да, в С нет ссылок, не задалось как-то с ними) на ПЕРВЫЙ максимальный элемент. Вы своим профессиональным взглядом внимательнее присмотритесь.
2
Заблокирован
29.08.2011, 19:44
Цитата Сообщение от easybudda Посмотреть сообщение
Наверное, с высоты профессионализма такие мелочи и не видны, но вообще-то в С функции, возвращающие константные значения - UB (не мне рассказывать Вам, профессионалу, что это значит). А определённость как раз есть - функция возвращает указатель (да-да, в С нет ссылок, не задалось как-то с ними) на ПЕРВЫЙ максимальный элемент. Вы своим профессиональным взглядом внимательнее присмотритесь.
Да, я ошибся. В случае равенства у вас возвращается подмассив с исключением последнего элемента.
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
29.08.2011, 19:53
Цитата Сообщение от Сыроежка Посмотреть сообщение
Да, я ошибся...

Не по теме:

Неужели это случилось-признание ошибки!:)

0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
29.08.2011, 20:37
Цитата Сообщение от Сыроежка Посмотреть сообщение
А чего "сверхестественного" вы ждете?! Совершенно непонятно.
В том то и дело, для чего упирать на профессионализм, если вы решили задачу очевидным способом? Чем Ваше, как вы зявляете, "профессиональное" решение отличается от решения ale_x_x, при условии что у Вас присутсвует совершенно ненужное поле?

Цитата Сообщение от Сыроежка Посмотреть сообщение
Что касается временной хронологии, то как раз первым здесь появилась моя ссылка на другую аналогичную тему, где был представлен мой алгоритм.
Первая ссылка на Ваше решение в посте #38, решение ale_x_x в #32.
1
Заблокирован
30.08.2011, 20:12
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
В том то и дело, для чего упирать на профессионализм, если вы решили задачу очевидным способом? Чем Ваше, как вы зявляете, "профессиональное" решение отличается от решения ale_x_x, при условии что у Вас присутсвует совершенно ненужное поле?


Первая ссылка на Ваше решение в посте #38, решение ale_x_x в #32.
Спасибо, насмешили меня! Знаете, что такое профессионально написанный код? Это не тогда, как вы наивно думаете, задача решена не очевидным способом. К написанию кода это вообще никакого отношения не имеет, как вам лично это не покажется странным. Профессионально написанный код - это 1) грамотный, 2) корректный, 3) легко читаемый код. Более того он даже не обязан быть идеальным кодом!

Что касается ваших ссылок на посты, то я имел в виду хронологию, что алгоритм уже написан в ранее обсуждаемой аналогичной теме. То есть, фактически, происходило переписание ранее написанного алгоритма, да еще не совсем грамотно и с ошибками. Это я и имел в виду, что проще обратиться к той теме, а не переписывать заново некорректно уже написанный код. Иначе это похоже на испорченный граммофон.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.08.2011, 20:34
Не оптимально) Но вариант.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
    if (vec.empty())
    {
        std::cerr << "Error. Empty sequence" << std::endl;
        return 1;
    }
    int element = *std::max_element(vec.begin(), vec.end());
    std::sort(vec.begin(), vec.end());
    std::pair<std::vector<int>::iterator, std::vector<int>::iterator> maxs = 
        std::equal_range(vec.begin(), vec.end(), element);
    std::cout << std::distance(maxs.first, maxs.second) << std::endl;
    return 0;
}
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
30.08.2011, 20:38
Цитата Сообщение от ForEveR Посмотреть сообщение
Не оптимально
Особенно, если учесть то, сколько в последовательности может быть элементов
0
Заблокирован
30.08.2011, 20:40
Цитата Сообщение от ForEveR Посмотреть сообщение
Не оптимально) Но вариант.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
    if (vec.empty())
    {
        std::cerr << "Error. Empty sequence" << std::endl;
        return 1;
    }
    int element = *std::max_element(vec.begin(), vec.end());
    std::sort(vec.begin(), vec.end());
    std::pair<std::vector<int>::iterator, std::vector<int>::iterator> maxs = 
        std::equal_range(vec.begin(), vec.end(), element);
    std::cout << std::distance(maxs.first, maxs.second) << std::endl;
    return 0;
}
Если у вас используется сортировка, то надобность в алгоритме std::max_element просто отпадает. Достаточно отсортировать в убывающем порядке, а затем вывести в поток все элементы, которые совпадают с первым элементом контейнера.

Так что у вас есть еще пути совершенствования вашего алгоритма!

Например, так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
 
int main()
{
    std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
    if ( vec.empty() )
    {
        std::cerr << "Error. Empty sequence" << std::endl;
        return 1;
    }
    std::sort(vec.begin(), vec.end(), std::greater<int>() );
    std::pair<std::vector<int>::iterator, std::vector<int>::iterator> maxs = 
        std::equal_range(vec.begin(), vec.end(), *v.begin() );
    std::cout << std::distance(maxs.first, maxs.second) << std::endl;
    return 0;
}
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
30.08.2011, 20:43
Цитата Сообщение от Сыроежка Посмотреть сообщение
Что касается ваших ссылок на посты, то я имел в виду хронологию, что алгоритм уже написан в ранее обсуждаемой аналогичной теме.
Во-первых, на форуме с большой вероятностью это же задача уже решалась таким же способом. Во-вторых, с чего Вы взяли, что alex_x_x видел Ваше решение? На форуме, а тем более в этом разделе, темы плодятся пачками, Вы сами-то все посты читаете, а?
Насчет некоректности, вот код alex_x_x:
Цитата Сообщение от alex_x_x Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T> 
struct Comp
{
   Comp() : count(0) {}
   void operator() (const T& t) 
   {
      if (t > max || 0 == count){ max = t; count = 1; }
      else if (t==max) ++count;
   }   
int count;
   T max; 
};
Где здесь некоректность? Философские споры об именовании и выборе подходящих типов откинем как не имеющие отношения к корретности/некорректности решения.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
30.08.2011, 20:44
Или так(может, уже было, лень всю тему листать)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <map>
#include <algorithm>
int main()
{
    int arr[] = { 1, 2, 3, 5, 4, 5, 3 };
    
    std::map<int, int> map;
    
    std::for_each( arr, arr + sizeof(arr) / sizeof(*arr), [&map] (int x)
    {
        ++map[x];
    } );
    
    std::cout << (*--map.end()).second;
}
0
Заблокирован
31.08.2011, 18:48
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Во-первых, на форуме с большой вероятностью это же задача уже решалась таким же способом. Во-вторых, с чего Вы взяли, что alex_x_x видел Ваше решение? На форуме, а тем более в этом разделе, темы плодятся пачками, Вы сами-то все посты читаете, а?
Насчет некоректности, вот код alex_x_x:

Где здесь некоректность? Философские споры об именовании и выборе подходящих типов откинем как не имеющие отношения к корретности/некорректности решения.
Я уже писал, где здесь некорректность. Не инициализирована переменная max. Поэтому алгоритм вообще не будет корректно работать. Кроме того грамотно писать не

C++
1
if (t > max || 0 == count)
а

C++
1
[CPP]if (0 == count || max < t)
[/CPP]

Заметили два различия? Именно два, а не одно? Первый исходный код просто является безграмотным, не говоря уж о том, что некорректным.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
31.08.2011, 19:12
Цитата Сообщение от Сыроежка Посмотреть сообщение
Кроме того грамотно писать...
Кстати да, прав Сыроежка. В принципе если эту строчку заменить, то и не важно, что max не инициализирована.
Цитата Сообщение от diagon Посмотреть сообщение
может, уже было
Ага, на предыдущей странице 62 пост 2 вариант...
0
Заблокирован
31.08.2011, 19:17
К сожалению мой код никто, видимо, не запускал, а он содержит пропуск функционала. То есть должно быть не

C++
1
2
        std::pair<std::vector<int>::iterator, std::vector<int>::iterator> maxs = 
                std::equal_range(vec.begin(), vec.end(), *v.begin() );
а

C++
1
2
        std::pair<std::vector<int>::iterator, std::vector<int>::iterator> maxs = 
                std::equal_range(vec.begin(), vec.end(), *v.begin(), std::greater<int>() );
То есть нужен вызов этого алгоритма с предикатом.


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

Вот как будет выглядеть код

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
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
 
int main()
{
        std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
        if ( vec.empty() )
        {
                std::cerr << "Error. Empty sequence" << std::endl;
                return 1;
        }
 
        std::sort(vec.begin(), vec.end(), std::greater<int>() );
 
        // Подсчет числа минимальных элементов
        std::pair<std::vector<int>::iterator, std::vector<int>::iterator> mins = 
                std::equal_range(vec.begin(), vec.end(), *v.begin() );
        std::cout << std::distance(mins.first, mins.second) << std::endl;
 
        // Подсчет числа максимальных элементов
        std::pair<std::vector<int>::reverse_iterator, std::vector<int>::reverse_iterator> maxs = 
                std::equal_range(vec.rbegin(), vec.rend(), *v.rbegin(), std::greater<int>() );
        std::cout << std::distance(maxs.first, maxs.second) << std::endl;
 
        return 0;
}
Но и это еще не все! На самом деле вместо алгоритмов std::equal_range проще пользоваться алгоритмом std::find_if, так как мы уже знаем, что последовательность упорядочена. Более того, эти алгоритмы в данном случае будут более эффективны, так как в противоположность им алгоритмы std::equal_range не принимают во внимание, что искомый элемент является первым (последним) в последовательности, и начинают его искать с помощью метода двоичного поиска.

Поэтому в вышеприведенном коде следует заменить алгоритмы std::equal_range на следующие предложения

C++
1
std::vector<int>::iterator it_min = std::find_if( vec.begin(), vec.end(), std::bind2nd( std::not_equal_to<int>(), *vec.begin() ) );
и

C++
1
std::vector<int>::reverse_iterator it_max = std::find_if( vec.rbegin(), vec.rend(), std::bind2nd( std::not_equal_to<int>(), *vec.rbegin() );
Соответственно и использовать функцию std::distance надо следующим образом

C++
1
std::distance( vec.begin(), it_min );
и

C++
1
std::distance( vec.rbegin(), it_max );

Теперь будет интересно посмотреть, кто предложит самый эффективный алгоритм подсчета числа максимальных или минимальных элементов в контейнере, который содержит всего один элемент!.

Добавлено через 2 минуты
Цитата Сообщение от easybudda Посмотреть сообщение
Кстати да, прав Сыроежка. В принципе если эту строчку заменить, то и не важно, что max не инициализирована.
Здесь также следует обратить внимание, что используется оператора >, тогда как для элементов контейнера требуется определение оператора <, а не >. То есть со многими определенными пользователем типами алгоритм не будет работать, так как пользователи не видят необходимости определять оператор >.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
31.08.2011, 19:38
Цитата Сообщение от Сыроежка Посмотреть сообщение
C++
1
if (t > max || 0 == count)
Не инициализирована переменная max. Поэтому алгоритм вообще не будет корректно работать.
Алгоритм будет работать корректно. В max будет мусор в случае если T будет являтся примитивным типом, это, конечно, факт, но на работу это не повлияет. При первом же вызове оператора каким бы ни было значение max условие 0 == count будет истинным, а следственно произойдет присваивание max'у значения первого элемента последовательности. Проверьте.
Цитата Сообщение от Сыроежка Посмотреть сообщение
Первый исходный код просто является безграмотным, не говоря уж о том, что некорректным.
Это не production код, это код собранный на коленке для форума, в котором, естественно, могут быть огрехи. И это нужно понимать прежде чем бросатся с обвинениями в "непрофессионализме".
0
Заблокирован
31.08.2011, 19:43
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Алгоритм будет работать корректно. В max будет мусор в случае если T будет являтся примитивным типом, это, конечно, факт, но на работу это не повлияет. При первом же вызове оператора каким бы ни было значение max условие 0 == count будет истинным, а следственно произойдет присваивание max значения первого элемента последовательности. Проверьте.
Вы заблуждаетесь! max может быть не "примитивным" типом, как вы пишите, а определенным пользователем объектом, который необязательно должен быть инициализирован конструктором по умолчанию. Кроме того, это значение max может случайно совпасть со значением элемента, и тогда вы счетчик увеличите на единицу.

Так что проблема не во мне, а в том, что вы этого не видите!

Добавлено через 4 минуты
Цитата Сообщение от CyBOSSeR Посмотреть сообщение

Это не production код, это код собранный на коленке для форума, в котором, естественно, могут быть огрехи. И это нужно понимать прежде чем бросатся с обвинениями в "непрофессионализме".
Код, собранный на коленках, может содержать опечатки, или какие-нибудь пропуски. Но тем не менее он должен быть написан грамотно.

Вы просто, как и многие не высококвалифицированные программисты, не понимаете простой вещи, что профессионал всегда пишет грамотный код. То есть нет у него такого, что в одном случае он пишет безграмотный код, а в другом случае грамотный. Он просто не способен писать безграмотный код, так как этому мешает его профессиональный опыт. Я вам уже написал выше, что означает профессионально написанный код. Вы же там ждали какого-то чуда, и это чудо считали профессионально написанным кодом.

Я смотрю, вы многое в программировании не понимаете!
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
31.08.2011, 19:49
Цитата Сообщение от Сыроежка Посмотреть сообщение
max может быть не "примитивным" типом, как вы пишите, а определенным пользователем объектом, который необязательно должен быть инициализирован конструктором по умолчанию.
Как этот факт отражен в Вашем решении? И как Вы предлагаете обойти эту ситуацию?
Цитата Сообщение от Сыроежка Посмотреть сообщение
Кроме того, это значение max может случайно совпасть со значением элемента, и тогда вы счетчик увеличите на единицу.
О чем вы? Каким бы нибыло значение max при первом вызове будет выполнено тело первого условного оператора. Посмотрите внимательно.
Цитата Сообщение от Сыроежка Посмотреть сообщение
Так что проблема не во мне, а в том, что вы этого не видите!
Пока я вижу человека, который бросается обвинениями и не в состоянии проанализировать пять строк кода.

Цитата Сообщение от Сыроежка Посмотреть сообщение
Вы просто, как и многие не высококвалифицированные программисты, не понимаете простой вещи, что профессионал всегда пишет грамотный код. То есть нет у него такого, что в одном случае он пишет безграмотный код, а в другом случае грамотный. Он просто не способен писать безграмотный код, так как этому мешает его профессиональный опыт. Я вам уже написал выше, что означает профессионально написанный код. Вы же там ждали какого-то чуда, и это чудо считали профессионально написанным кодом.
Мда... Печаль... Вы либо слишком молоды, либо слишком категоричны.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
31.08.2011, 20:11
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Алгоритм будет работать корректно.
Странно, но работает. Я-то думал, что если t <= max, то чему там count равно уже не проверяется... Или ещё какой-то тонкости не улавливаю?

Вот кстати ещё одно очень простое любительское решение
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <algorithm>
 
int main(){
    const int size(10);
    int arr[size] = { 1, 3, 5, 3, 2, 5, 4, 3, 1, 2 };
    int me = *std::max_element(arr, arr + size);
    std::cout << "Max element: " << me << " meets " << std::count(arr, arr + size, me) << " times" << std::endl;
    
    return 0;
}
Может тоже было, но на вскидку не нашёл в этой теме.


Цитата Сообщение от Сыроежка Посмотреть сообщение
Вы просто, как и многие не высококвалифицированные программисты, не понимаете...
Вот ей-богу надоело уже! Оставьте при себе своё мнение о профессионализме участников форума, а то ведь в правилах есть пункт "неуважительное отношение". С совсем небольшой натяжкой вполне применим. Надо оно Вам?

Добавлено через 4 минуты
А чем, кстати, по умолчанию поля типа int в классе инициализируются? Случайно не INT_MIN (ну или как там в С++ правильно минимальное значение обозначается)? А то есть подозрение, что минимальный элемент вот как-раз из-за этого нюанса и не найдётся, и не посчитается...
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.08.2011, 20:11
Помогаю со студенческими работами здесь

В чем ошибка? В массиве целых чисел найти количество максимальных элементов
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #define N 16 #define A 0 #define B 5 void Init(int *a, int n) { ...

Определить количество максимальных элементов в массиве
Постановка задачи: Дан двумерный массив. Определить: а) Количество максимальных элементов в массиве б) Количество минимальных элементов...

Определить количество максимальных элементов в массиве
Дан двумерный массив. Определить: а) количество макс. элементов в массиве б) количество мин. элементов в массиве Для определения...

Определить количество максимальных элементов в массиве
Добрый день. Собственно, задание: Запрашивать размерность двумерного массива. Затем организовать заполнение двумерного массива целыми...

Определить количество максимальных элементов в массиве
Щас через минуты 2 будет к\р, поможете?))) Я буду выкладывать задачи! :drink: Добавлено через 4 минуты 44 секунды Первая: В массиве...


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

Или воспользуйтесь поиском по форуму:
80
Закрытая тема Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru