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

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

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

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

29.03.2011, 20:52. Просмотров 656. Ответов 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';
то он считает? если сумму значений в векторе то не правильно считает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ma3a
Эксперт C++
616 / 460 / 31
Регистрация: 28.01.2011
Сообщений: 605
29.03.2011, 21:07     Нужно переделать программу (accumulate_if() и count_if() ) #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.
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
29.03.2011, 22:52  [ТС]     Нужно переделать программу (accumulate_if() и count_if() ) #3
33 и 34 ошибку пишет.
никакое сопоставление функции для вызова, чтобы count_if...
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
31.03.2011, 20:48  [ТС]     Нужно переделать программу (accumulate_if() и count_if() ) #4
из за чего пишет ошибку на 33 и 34 строке? использую dev c++
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,199
Записей в блоге: 1
Завершенные тесты: 1
01.04.2011, 04:04     Нужно переделать программу (accumulate_if() и count_if() ) #5
count_if
Ardarik
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
03.04.2011, 23:25  [ТС]     Нужно переделать программу (accumulate_if() и count_if() ) #6
Я конечно понимаю что английский язык модно, но люблю все таки русский. std::cout где про это почитать можно? и написано по проще, все таки начинающий в этом деле
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2011, 23:38     Нужно переделать программу (accumulate_if() и count_if() )
Еще ссылки по теме:

Нужно переделать программу из cin и cout в printf и scanf C++
C++ нужно переделать в с++
Нужно немного переделать программу: использовать функции и динамическое выделение памяти C++
C++ Используя алгоритм count_if посчитать количество чисел в массиве
Алгоритм count_if C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9439 / 5462 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
03.04.2011, 23:38     Нужно переделать программу (accumulate_if() и count_if() ) #7
Ardarik, модно трусы носить поверх колготок и синюю майку с красным пятиугольником, а документация на английском языке - обычное явление, при чём далеко не только в программировании. Советую подучить, если с ним всё так плохо. Да и учиться искать информацию самостоятельно - тоже полезное занятие. В гугле попробуйте набрать с++ потоки ввода вывода...
Yandex
Объявления
03.04.2011, 23:38     Нужно переделать программу (accumulate_if() и count_if() )
Ответ Создать тему
Опции темы

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