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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти число элементов массива, которые больше своих “соседей” http://www.cyberforum.ru/cpp-beginners/thread345621.html
Найти число элементов массива, которые больше своих “соседей”, т.е. предшествующего и последующего элементов.
C++ Математически описанный алгоритм -> C++ Имеется статья с алгоритмом. В С++ я новичок потому не очень понятно, как все же описать математические термины(см.картинку) и как сделать пересечение множеств(предполагалось использование библ. boost). Кто-нибудь уже сталкивался с написанием алгоритма по научным статьям? http://narod.ru/disk/23000238001/Local%20Optimality%20and%20Its%20Application%20k-claw%20free%20gr.pdf.html http://www.cyberforum.ru/cpp-beginners/thread345593.html
C++ Как тут происходит перестановка байтов...
Вот в книге Шилдта 4-е издание... есть такой пример: #include <iostream> #include <cstdio> #include <cstring> #include <windows.h> using namespace std; union swap_byte
Проблема в стэке C++
Всем Привет! Я делал упражнение на тему стэков, вроде всё сделал, но вылетает какая-то глупая ошибка. Вот код, я думаю, можно не объяснять, что должна делать программа, но если потребуется, объясню. Заголовочный файл с классом: // файл attach.h struct customer { char fullname; double payment; }; typedef customer Item;
C++ Список, стек и очередь. http://www.cyberforum.ru/cpp-beginners/thread345534.html
Файл содержит вещественные числа. Нужно удвоит вхождение всех чисел N. Решить с помощью стека, списка и очереди в С++. Вся информация считывается и выводится в файл, из консоли ничего не считывается и не выводится. Доступ к элементам стека или очереди происходит только с помощью функции извленения элемента из стека или очереди. Помогите пожалуйста!
C++ Возведение в степень n с помощью рекурсии #include<iostream> using namespace std; int funk(int,int); int main () {setlocale(LC_ALL,"Rus"); int a=2,n=5; cout<<funk(a,n); cin.get(); cin.get(); return 0; подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
28.08.2011, 20:24     Определить количество максимальных элементов в массиве.
Цитата Сообщение от alex_x_x Посмотреть сообщение
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 <algorithm>
#include <vector>
#include <iostream>
 
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; 
};
 
int main()
{ 
   std::vector<int> v = {-10,3,23,2,3,-34,12,23};
   Comp<int> comp = std::for_each( v.begin(), v.end(), Comp<int>() );
   if (comp.count)
   {
     std::cout << comp.max << ", count - " << comp.count << std::endl;
   }    
}
не уверен, что с производительностью будет
До производительнсоти еще далеко! Ваш алгоритм содержит серьезную ошибку. Попробуйте ее найти сами. В теме "одноразмерный массив" я уже привел корректное профессиональное решение этой задачи.

Добавлено через 2 минуты
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Петррр, Сыроежка прав относительно того, что начальное значение максимума не должно быть -1 и то как заполняется массив, никак этого положения не меняет.


Ок, и что мы поимеем после строки max = sequence[0], если последовательность пуста?
А дело в том, что это выполняют лишь в том случае, если последовательность не пуста. Посмотрите реализацию алгоритма std::max_element
 
Текущее время: 17:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru