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

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

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

Найти количество элементов массива - C++

16.11.2012, 18:50. Просмотров 952. Ответов 16
Метки нет (Все метки)

Найти количество элементов массива (a1,a2,a3,...,an), удовлетворяющих условиям b<a<c.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2012, 18:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти количество элементов массива (C++):

Одномерные массивы и указатели (найти количество элементов массива, равных 0, сумму элементов массива...) - C++
Помогите пожалуйста разработать программу и реализовать интуитивный понятный интерфейс (используя формы).При написании программы можно...

Найти количество положительных элементов массива; найти сумму элементов, расположенных после заданного - C++
В одномерном массиве, состоящем из n целых элементов, вычислить: 1) Количество положительных элементов массива; 2) Сумму элементов...

в массиве . найти произведение ненулевых элементов, количество элементов, превышающих значение среднего арифметического элементов массива - C++
В массиве Х(N) найти произведение ненулевых элементов, количество элементов, превышающих значение среднего арифметического элементов...

в массиве . найти произведение нулевых элементов, количество элементов, превышающих значение среднего арифметического элементов массива - C++
В массиве Х(N) найти произведение нулевых элементов, количество элементов, превышающих значение среднего арифметического элементов массива....

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

Найти количество нулевых и количество отрицательных элементов массива - C++
c++ Найти количество нулевых и количество отрицательных элементов массива.

16
bananasus
2 / 2 / 0
Регистрация: 01.11.2012
Сообщений: 37
16.11.2012, 18:52 #2
C
1
2
3
4
5
for(int i=0,N=0; i<n; i++)
{
     if(mas[i]<c && mas[i]>b)
     ++N;
}
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.11.2012, 18:56 #3
C++
1
int count = std::count_if(mas, mas + n, [b,c] (int v) { return v < c && v > b; });
0
bananasus
2 / 2 / 0
Регистрация: 01.11.2012
Сообщений: 37
16.11.2012, 20:41 #4
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
int count = std::count_if(mas, mas + n, [b,c] (int v) { return v < c && v > b; });
Выпендреж это конечно хорошо) Но судя по вопросу предыдущий пример и так будет сложен для понимания ТС.
1
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.11.2012, 21:28 #5
bananasus, А чем это сложно?
0
gsm180
20 / 12 / 1
Регистрация: 19.10.2012
Сообщений: 102
Записей в блоге: 1
16.11.2012, 21:50 #6
C++
1
2
3
4
5
6
int sum(int *f,int a, int b){
    int res=0;
    while(*f){
        if(*f>a&&*f<b)res++;//количиство элементов удовлитворяющих условиям
        f++;}//перебираем элементы массива
    return res;}
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
16.11.2012, 22:13 #7
Цитата Сообщение от ForEveR Посмотреть сообщение
bananasus, А чем это сложно?
Тем, что в большинстве уроков С++, и в том числе в книге Страуструпа стандартная библиотека рассматривается в последнюю очередь, когда ученик знаком и с языком С и с основами ООП и вообще потратил на обучение достаточно времени и написал все эти вектора/списки/очереди самостоятельно в процессе выполнения заданий по предыдущим разделам.
Более того, во многих курсах по обучению С++, STL не рассматривается вообще.
Ну и уж тем более ни один учитель, не примет домашнее задание, сделаное по шаблону, т.к. все эти задачки на циклы призваны научить составлять простые алгоритмы. А не пользоваться шаблонами.
1
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
17.11.2012, 00:27 #8
Kuzia domovenok, Мне-то до этого какое дело? Я пишу откровенно говоря, чтобы свои знания закрепить, показать элегантное решение, а обычное решение через циклы мне писать абсолютно незачем, довольно редко я таким пользуюсь. Человек, который хочет понять, как работает тот или иной алгоритм - прочитает про него и сделает по-своему.) К слову, в книге Страуструпа, по крайней мере в той, что для новичков STL начинает рассматриваться и использоваться сразу.
1
Croessmah
17.11.2012, 02:21
  #9

Не по теме:

Цитата Сообщение от bananasus Посмотреть сообщение
[b,c] (int v) { return v < c && v > b; }
думаю это, он точно не поймет
[b,c] (int v) { return v < c && v > b; }

0
bananasus
2 / 2 / 0
Регистрация: 01.11.2012
Сообщений: 37
18.11.2012, 13:01 #10
Да и вообще, твой вариант работает намного медленней!)
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
18.11.2012, 18:57 #11
bananasus, И что далее? Как проводились тесты? С какой оптимизацией? Какое здесь дело до скорости выполнения?
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
18.11.2012, 19:35 #12
Цитата Сообщение от ForEveR Посмотреть сообщение
bananasus, И что далее? Как проводились тесты? С какой оптимизацией? Какое здесь дело до скорости выполнения?
За универсальность всё же приходится платить. Эти шаблонные методы наверняка реализованы через те же циклы. Т.к. это необходимый минимум для решения данной задачи.
Но при этом в добавок к этому минимуму в цикле могут выполняться дофига проверок, например на безопасность, на выход за границы, вызовы каких-нибудь конструкторов временных объектов...
...А может и не выполняться, мы не знаем. Но то, что алгоритм тот же, а значит его скорость меньше или равна простому понятному циклу - факт.
1
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
18.11.2012, 20:25 #13
Kuzia domovenok, Верно. Зато код выглядит элегантнее и проще для определенной категории людей. А так же из за проверок, он безопаснее.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7423 / 4538 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
19.11.2012, 01:36 #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Тем, что в большинстве уроков С++, и в том числе в книге Страуструпа стандартная библиотека рассматривается в последнюю очередь, когда ученик знаком и с языком С и с основами ООП и вообще потратил на обучение достаточно времени и написал все эти вектора/списки/очереди самостоятельно в процессе выполнения заданий по предыдущим разделам.
Более того, во многих курсах по обучению С++, STL не рассматривается вообще.
Ну и уж тем более ни один учитель, не примет домашнее задание, сделаное по шаблону, т.к. все эти задачки на циклы призваны научить составлять простые алгоритмы. А не пользоваться шаблонами.
Именно поэтому, сразу после примера с cout<< "Hello world" идет использование контейнера string, а в следующей главе рассматривают векторы. (Принципы и практика использования).
Кстати, в первой главе (стр. 50) книги "Язык программирования С++" написано: "В целом, не пытайтесь программировать то, что уже запрограммировано в стандартной библиотеке." Пусть будет альтернатива того, как надо делать. А на С-подобном С++ напишут и другие.

Добавлено через 19 минут
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
...А может и не выполняться, мы не знаем.
знаем
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<class InputIt, class UnaryPredicate>
typename iterator_traits<InputIt>::difference_type
    count_if(InputIt first, InputIt last, UnaryPredicate p)
{
    typename iterator_traits<InputIt>::difference_type ret = 0;
    for (; first != last; ++first) {
        if (p(*first)) {
            ret++;
        }
    }
    return ret;
}
В данном случае да, скорость будет одинакова и реализация схожа, но это отнюдь не значит, что все велосипеды будут кататься быстрее реализаций в STL.
1
bananasus
2 / 2 / 0
Регистрация: 01.11.2012
Сообщений: 37
19.11.2012, 16:01 #15
Да где же одинакова?
0
19.11.2012, 16:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 16:01
Привет! Вот еще темы с ответами:

Найти количество элементов в этих массива равных первому элементу массива S - C++
Даны целочисленные массивы S и T с разным количеством элементов. Найти количество элементов в этих массива равных первому элементу массива...

Найти количество отрицательных элементов массива, находящихся во второй половине массива - C++
Обязательные условия: 1) массивы должны быть динамические – организовать выделение памяти; 2) значения элементов массива вводятся с ...

Найти количество элементов превышающих среднее арифметическое всех элементов массива - C++
Дано одномерный массив из 15 целых чисел. Найти количество элементов превышающих среднее арифметическое всех элементов массива.

Найти сумму положительных элементов массива и количество этих элементов - C++
Задан массив d. Найти сумму корней положительных элементов массива и количество этих элементов .


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

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

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