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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 60, средняя оценка - 4.75
валентин777
0 / 0 / 0
Регистрация: 01.06.2011
Сообщений: 45
#1

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

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

Дан одномерный массив. Определить количество максимальных элементов в массиве.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2011, 19:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить количество максимальных элементов в массиве. (C++):

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

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

В матрице случайных числе определить количество положительных, отрицательных, нулевых и максимальных элементов - C++
1. В матрице размерами N*M определить количество положительных, отрицательных элементов и нулей (N и M не больше 10) и максимальный...

В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов. - C++
1. В массиве A из N элементов (N не больше 30) определить количество элементов, имеющих четные значения, и сумму этих элементов. Число N и...

В массиве А(n) (n<=7) хотя бы один нуль. Определить количество положительных и количество отрицательных элементов к первому нулю. - C++
В массиве А(n) (n&lt;=7) хотя бы один нуль. Определить количество положительных и количество отрицательных элементов к первому нулю.

В массиве из 50 элементов определить количество элементов, кратных 6 и найти минимальный элемент - C++
В массиве из 50 элементов определить количество элементов, кратных 6 и найти минимальный элемент. Помогите, кто сможет. Нужно в C++

88
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.08.2011, 15:43 #16
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Вот простенький код...
Вот вся программа:
http://www.cyberforum.ru/cpp-beginners/thread345814/post1942781.html
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
28.08.2011, 15:51 #17
Цитата Сообщение от Thinker Посмотреть сообщение
Просто на месте массива файлы могут быть, списки и т.д. А уж по ним несколько раз бегать не очень хорошо.
То, что я написал это решение, что называется, "в лоб". В задаче по сути требуется решить две подзадачи: найти максимальный элемент, и подсчитать количество таковых в массиве, что собственно у меня это и сделано )) Всё остальное это уже оптимизация. В первую очередь нужно сделать так чтобы программа работала(не путать с "пессимизацией")), и только потом, если в этом есть необходимость, чтобы работала быстрее.
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.08.2011, 17:02 #18
Цитата Сообщение от rangerx Посмотреть сообщение
задаче по сути требуется решить две подзадачи: найти максимальный элемент, и подсчитать количество таковых в массиве, что собственно у меня это и сделано ))
В моем алгоритме это делается тоже. И речь идет о стиле программирования.
0
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.08.2011, 17:20 #19
Thinker, вообще речь идёт о том, что ваша функция MaxCount - одноразовая. Если завтра потребуется посчитать количество минимальных элементов - вам придётся переписывать свою функцию (речь не о том, что надо будет поменять всего лишь знак ">" на "<", речь о том, что придётся вмешаться в код). А вот если написать функцию, подсчитывающую количество элементов в массиве, равных заданному - это уже другой разговор. Для данной задачи достаточно написать функцию поиска максимума, а для новой, с подсчётом количества минимальных элементов, придётся только дописать новую функцию, не вторгаясь в уже отлаженный код и не ломая его по неосторожности.
Собственно, такой подход в алгоритмах STL и применяется.
1
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.08.2011, 17:26 #20
Цитата Сообщение от silent_1991 Посмотреть сообщение
Thinker, вообще речь идёт о том, что ваша функция MaxCount - одноразовая.... Собственно, такой подход в алгоритмах STL и применяется.
Если все писать универсальное, то все системы рухнут от перегрева работы. Драйвера и многое другое так не пишут, вот в о чем речь.

Давайте немного алгоритмически мыслить, а не все "в лоб"
0
Сыроежка
Заблокирован
28.08.2011, 18:19 #21
Цитата Сообщение от Петррр Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    int a[50];
    int max = -1, maxCount = 0;
    int i;
    for(i = 0; i < 50; i++)
    {
        a[i] = rand() % 10;
        if (a[i] > max)
            max = a[i];
        printf("%d ", a[i]);
    }
    for(i = 0; i < 50; i++)
        if (a[i] == max)
            maxCount++;
    printf("\n\n%d", maxCount);
    getchar();
}
Ваш код некорректный, так как, например, нельзя исключать ситуацию, когда все элементы заданного массива будут менрьше -1, и тогда вы получите, что для любой подобной последовательности состоящей из отрицательных элементов максаимум всегда будет равен -1.
0
Петррр
5970 / 3407 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
28.08.2011, 18:21 #22
Разве эта строка может сгенерировать число меньше -1.?
C
1
a[i] = rand() % 10;
0
silent_1991
Эксперт С++
4987 / 3044 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.08.2011, 18:29 #23
Цитата Сообщение от Thinker Посмотреть сообщение
Давайте немного алгоритмически мыслить, а не все "в лоб"
Давайте. Ваша функция написана "в лоб", ибо она не универсальна. Предложенный мной вариант - алгоритмический, потому что при небольшом изменении условия уже написанный и отлаженный код не придётся менять.

Цитата Сообщение от Thinker Посмотреть сообщение
все системы рухнут от перегрева работы
И как же на это повлияет универсальность?

Цитата Сообщение от Thinker Посмотреть сообщение
Драйвера и многое другое так не пишут, вот в о чем речь.
"Драйвера и многое другое" - вещи специфические, а не прикладные, о коих говорим мы.
0
Сыроежка
Заблокирован
28.08.2011, 18:36 #24
Цитата Сообщение от Петррр Посмотреть сообщение
Разве эта строка может сгенерировать число меньше -1.?
C
1
a[i] = rand() % 10;

А причем здесь эта строка?! Вы показываете решение общей задачи нахождения количества максимальных элементов в последовательности. Так что ваша строка - это всего лишь ваш личный выбор способа заполнения массива, а у других людей может быть другой способ заполнения массива, например, через входной поток!
0
Петррр
5970 / 3407 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
28.08.2011, 18:50 #25
Сыроежка, Вы притворяетесь или реально тупите.? Запуститу мой код тысячу раз и посмотрите будет ли ответ неверный. Если Валентин выберет другой способ заполнения массива, то пусть и по другому ищет это самое количество.

Добавлено через 1 минуту
Я писал конкретно под свой вариант.
0
Сыроежка
Заблокирован
28.08.2011, 19:19 #26
Цитата Сообщение от Петррр Посмотреть сообщение
Сыроежка, Вы притворяетесь или реально тупите.? Запуститу мой код тысячу раз и посмотрите будет ли ответ неверный. Если Валентин выберет другой способ заполнения массива, то пусть и по другому ищет это самое количество.

Добавлено через 1 минуту
Я писал конкретно под свой вариант.
А зачем его запускать тысячу раз?! Достаточно запустить один раз, заполнив массив через входной поток, и, используя ваш алгоритм, получить неверный ответ.

Я еще раз повторяю, ваш алгоритм подсчета количества максимальных элементов некорректный" Можно даже сказать грубее: безграмотный. Это уже избитое место, что при решении подобных задач начальное значение максимума или минимума должно быть значение первого элемента. То есть вы демонстрируете неправильный подход к решению задачи. А задача была сформулирована четко: определить количество максимальных элементов. Вопрос о том, какой будет использоваться массив и с какими значениями элементов, как некоторое ограничение на алгоритм, не ставился.
0
Петррр
5970 / 3407 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
28.08.2011, 19:46 #27
Это где ж написано что мин/макс должен быть первый элемент.? Покажите мне мнение авторитетных авторов, а не демонстрируйте своё, грамотное
0
Сыроежка
Заблокирован
28.08.2011, 19:57 #28
Цитата Сообщение от Петррр Посмотреть сообщение
Это где ж написано что мин/макс должен быть первый элемент.? Покажите мне мнение авторитетных авторов, а не демонстрируйте своё, грамотное
Не обязательно первый, может быть и последний, если контейнер вам позволяет и даже взятый из середины контейнера. Главное - чтобы это было значением элемента контейнера. Просто обычно опреации последовательного обхода контейнеров начинают с некоторого начального элемента То есть все алгоритмы используют диапазон, задаваемый начальный и конечный итераторами. Более того, если вы имеете дело с однонаправленным списком, проще и эффективнее брать именно первый элемент в качестве предполагаемого максимума. Вы вообще алгоритмы знаете?! Посмотрите, как устроен алгоритм std::max_element.

Вообще-то, это изучают на первых занятиях по программированию: как найти максимальный или минимальный элемент в последовательности. Могу вас уверить, что ваш алгоритм демонстрируют в качестве неправльного подхода, как не надо находить максимальный и минимальный элемент!

Я вообще не понимаю, чего вы добиваетесь, так как, как я уже сказал, ваш алгоритм некорректный, и я показал, почему он некорректный.
0
Петррр
5970 / 3407 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
28.08.2011, 20:01 #29
Нет. Я не знаю как работают алгоритмы, а что? Я говорю, что алгоритм корректный, потому что я знаю, что в массиве не будет элемента меньше нуля.
0
Сыроежка
Заблокирован
28.08.2011, 20:11 #30
Цитата Сообщение от Петррр Посмотреть сообщение
Нет. Я не знаю как работают алгоритмы, а что? Я говорю, что алгоритм корректный, потому что я знаю, что в массиве не будет элемента меньше нуля.
Знаете, я не вижу смысла обсуждать далее с вами этот вопрос, так как все, что можно было сказать, я уже сказал, в том числе и то, что в вопросе темы ничего не говорилось об ограничениях на значения элементов массива, а требовалось представить алгоритм, который для произвольного массива подсчитывает число максимальных элементов. Никого не интересовало, как вы будете воодить данные в массив. Не это было предметом темы.
Но даже если гипотетически предположить, что были какие-то ограничения на значения элементов массива, ваш подкход к решению щадачи все равно остается некорректным и бесполезным, так как кроме одного единичного частного случая его использовать нельзя. То есть даже речи никакой не идет о переносимости вашего алгоритма нахождения максимального элемента в последовательноти.

Повторяю в последний раз, так как, как я вижу, можно вам и десять раз повторять, но вы все равно не поймете, что ваш алгоритм нахождения количества максимальных элементов безграмотен! Вы даже не в состоянии понять, что ввод данных никакого отношения к самому алгоритму не имеет.
0
28.08.2011, 20:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2011, 20:11
Привет! Вот еще темы с ответами:

В массиве X определить количество элементов - C++
В массиве X определить количество элементов меньших среднего ариф*метического значения. Не упорядочивая массив удалить из него элемен*ты,...

В массиве A из N элементов (N не больше 30) определить количество элементов... - C++
1. В массиве A из N элементов (N не больше 30) определить количество элементов, значения которых больше среднего арифметического всех...

Определить количество элементов в массиве структур - C++
Помогите пожалуйста! Программка работает но по новому условию надо вместо &quot; введите количество продавцов&quot; чтобы я не знала заранее...

Определить количество положительных элементов в массиве - C++
Написать функцию, определяющую количество положительных элементов в массиве. Написать программу, проверяющую работу этой функции. Массив...


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

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

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