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

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

Войти
Регистрация
Восстановить пароль
 
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
#1

Нужно переделать программу (accumulate_if() и count_if() ) - C++

29.03.2011, 20:52. Просмотров 666. Ответов 6
Метки нет (Все метки)

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
29
30
31
32
33
34
35
36
37
38
39
40
#include <vector>
#include <iostream>
 
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int i, c, p=0 ,o=0;
   cout << "Vvedite razmer: ";
    cin >> i;
    vector<int> a(i);
    for (int ii=0; ii<i; ii++)
    {
        cout << "vvedite 4islo: " ;
        cin >> c;
        a[ii]=c;
         //    cout << a[i] << endl;
         
             } 
          for (int ii=0; ii<i; ii++)
         //   for (vector<int>::iterator it = a.begin (); it != a.end (); ++it)
             {
                  
                 if (a[ii]>0) 
                 {
                    p++;       
         
                           }
                           if (a[ii]<0) 
                 {
                    o++;       
                           }
                 }
             cout << "Polozitel: " << p << endl;
             cout << "Otri4atel: " << o << endl;
             
    system("PAUSE");
    return EXIT_SUCCESS;
}
Нужно изменить программу с использованием accumulate_if() и count_if(). Инфа вроде есть но понять не могу как.

Добавлено через 27 минут
accumulate_if () численный алгоритм а для чего его использовать не пойму

Добавлено через 12 минут
C++
1
2
int sum = accumulate (a.begin (), a.end (), 0); 
        cout << "Sum is: " << sum << endl;
Вот что только понял, но вроде не то

Добавлено через 6 минут
вот вроде нашел
C++
1
2
3
4
5
6
 const int START = 0, END = i;
  for( int t = START; t <= END; ++t ) a.push_back(i);
 
  int sum = accumulate( a.begin(), a.end(), 0 );
 
  cout << "sum from " << START << " to " << END << " is " << sum << '\n';
то он считает? если сумму значений в векторе то не правильно считает
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2011, 20:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно переделать программу (accumulate_if() и count_if() ) (C++):

Нужно переделать программу из C++ в C - C++
Вот собственно и она. Заранее благодарен #include &lt;iostream&gt; using namespace std; int main() { const int m = 4 , n...

Нужно программу на Паскале переделать в программу на С++ - C++
Помогите, пожалуйста!!! У меня есть программа на Паскале , а нужно ее переписать, чтобы она была на С++ (windows консоль). Текст...

Нужно переделать программу с С++ под С - C++
Доброе утро форумчани! Есть программа написанная на С++ #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; int...

Матрица, нужно слегка переделать программу - C++
Вот есть программа #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int Sum (int** arr, int N, int i) { int...

Нужно переделать программу из cin и cout в printf и scanf - C++
#include &lt;iostream&gt; using namespace std; int fact(int n) { int s=1; for(int i=1; i&lt;=n; i++) s*=i; ...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ma3a
Эксперт C++
617 / 461 / 31
Регистрация: 28.01.2011
Сообщений: 605
29.03.2011, 21:07 #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
27
28
29
30
31
32
33
34
35
36
37
38
#include <vector>
#include <iostream>
#include <algorithm>
#include <functional>
#include <numeric>
 
int main(int argc, char *argv[])
    {
    struct MyCompFunctorPos : public std::unary_function<int,bool>
        {
        bool operator ()(int a)
            {
            return a > 0;
            }
        };
    struct MyCompFunctorNeg : public std::unary_function<int,bool>
        {
        bool operator ()(int a)
            {
            return a < 0;
            }
        };
    int i, c, p=0 ,o=0;
    std::cout << "Vvedite razmer: ";
    std::cin >> i;
    std::vector<int> a(i);
    for (int ii=0; ii<i; ii++)
        {
        std::cout << "vvedite 4islo: " ;
        std::cin >> c;
        a[ii]=c;
        }
    std::cout << "Polozitel: " << std::count_if(a.begin(),a.end(),MyCompFunctorPos()) << std::endl;
    std::cout << "Otri4atel: " << std::count_if(a.begin(),a.end(),MyCompFunctorNeg()) << std::endl;
    std::cout << "Sum of elements is " << std::accumulate(a.begin(),a.end(), 0) << std::endl;
    system("PAUSE");
    return EXIT_SUCCESS;
    }
Цитата Сообщение от Ardarik Посмотреть сообщение
C++
1
2
3
4
const int START = 0, END = i;
for( int t = START; t <= END; ++t ) a.push_back(i);
int sum = accumulate( a.begin(), a.end(), 0 );
cout << "sum from " << START << " to " << END << " is " << sum << '\n';
то он считает? если сумму значений в векторе то не правильно считает
А здесь вы, скорее всего, имели ввиду a.push_back(t), а так у вас в векторе окажется ровно t + 1 значений i, хотя как мне кажется нужна была сумма чисел от 1 до t.
1
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
29.03.2011, 22:52  [ТС] #3
33 и 34 ошибку пишет.
никакое сопоставление функции для вызова, чтобы count_if...
0
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
31.03.2011, 20:48  [ТС] #4
из за чего пишет ошибку на 33 и 34 строке? использую dev c++
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
01.04.2011, 04:04 #5
count_if
0
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
03.04.2011, 23:25  [ТС] #6
Я конечно понимаю что английский язык модно, но люблю все таки русский. std::cout где про это почитать можно? и написано по проще, все таки начинающий в этом деле
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
03.04.2011, 23:38 #7
Ardarik, модно трусы носить поверх колготок и синюю майку с красным пятиугольником, а документация на английском языке - обычное явление, при чём далеко не только в программировании. Советую подучить, если с ним всё так плохо. Да и учиться искать информацию самостоятельно - тоже полезное занятие. В гугле попробуйте набрать с++ потоки ввода вывода...
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2011, 23:38
Привет! Вот еще темы с ответами:

Нужно немного переделать программу нахождения компонент сильной связности в графе - C++
В общем задание такое, нужно переделать эту программу, я не знаю как это сделать, помогите люди добрые)) #include &lt;iostream&gt; ...

Нужно немного переделать программу: использовать функции и динамическое выделение памяти - C++
Помогите переделать программу в соответствии с условиями: а) для хранения массивов используйте динамически распределяемую память; б)...

count_if - C++
Я где-то видел такое использование: count_if (a.begin(), a.end(), ...); (вместо троеточия что-то было). Не подскажете, что это за зверь...

Алгоритм count_if - C++
Помогите! Необходимо, используя алгоритм count_if посчитайте количество чисел в векторе, которые по модулю меньше 4. #include &quot;stdafx.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.04.2011, 23:38
Ответ Создать тему
Опции темы

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