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

Расчет суммы или количества элементов массива, удовлетворяющих некоторому условию - C++

Восстановить пароль Регистрация
 
Nutlet
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 15
13.01.2014, 16:31     Расчет суммы или количества элементов массива, удовлетворяющих некоторому условию #1
Дан массив целых чисел. Найти:
а) сумму нечетных элементов;
б) сумму элементов, кратных заданному числу;
в) сумму элементов массива, кратных а или b.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 16:31     Расчет суммы или количества элементов массива, удовлетворяющих некоторому условию
Посмотрите здесь:

C++ Выведите на печать номера элементов заданного массива Y(N), удовлетворяющих условию 0 < yi < 1
Вычислить количество и произведение элементов массива, удовлетворяющих условию C++
C++ Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям
C++ Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям
Исчисление суммы, количества элементов массива, удовлетворяющих заданным условиям C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
13.01.2014, 17:00     Расчет суммы или количества элементов массива, удовлетворяющих некоторому условию #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
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <algorithm>
#include <iterator>
#include <iostream>
#include <numeric>
#include <vector>
#include <random>
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution <> distribution(-25, 25);
 
    size_t vectorSize;
    std::cout << "Size of vector: ";
    std::cin >> vectorSize;
 
    std::vector <int> vector(vectorSize);
    std::cout << "Vector: " << std::endl;
    std::generate(vector.begin(), vector.end(), [&]() -> int {
        return distribution(generator);
    });
    std::copy(vector.begin(), vector.end(), std::ostream_iterator <int> (std::cout, " "));
 
    size_t index(0);
    std::cout << std::endl << "Sum of elements with even indexes: ";
    std::cout << std::accumulate(vector.begin(), vector.end(), 0, [&index](int resultSum, int currentElement) -> int {
        resultSum += index++ % 2 ? currentElement : 0;
        return resultSum;
    }) << std::endl;
 
    int firstUserNumber;
    std::cout << "a: ";
    std::cin >> firstUserNumber;
    std::cout << "Sum of elements multiples of " << firstUserNumber << ": ";
    std::cout << std::accumulate(vector.begin(), vector.end(), 0, [firstUserNumber](int resultSum, int currentElement) -> int {
        resultSum += !(currentElement % firstUserNumber) ? currentElement : 0;
        return resultSum;
    }) << std::endl;
 
    int secondUserNumber;
    std::cout << "b: ";
    std::cin >> secondUserNumber;
    std::cout << "Sum of elements multiples of " << firstUserNumber << " or " << secondUserNumber << ": ";
    std::cout << std::accumulate(vector.begin(), vector.end(), 0, [firstUserNumber, secondUserNumber](int resultSum, int currentElement) -> int {
        resultSum += !(currentElement % firstUserNumber) || !(currentElement % secondUserNumber) ? currentElement : 0;
        return resultSum;
    }) << std::endl;
 
    std::system("pause");
    return 0;
}
VaDiG
 Аватар для VaDiG
29 / 26 / 3
Регистрация: 13.01.2014
Сообщений: 63
13.01.2014, 17:28     Расчет суммы или количества элементов массива, удовлетворяющих некоторому условию #3
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
41
42
43
44
45
46
47
48
49
50
51
52
#include<iostream>
#include<ctime>
 
using namespace std;
int main()
{
    setlocale(0, "");
    srand(time(NULL));
 
    size_t size;
    cout << "Введите размер: ";
    cin >> size;
 
    int *array = new int [size];
    for(size_t i = 0; i < size; i++)
    {
        array[i] = rand() % 15;
        cout << array[i] << " ";
    }
    cout << endl;
 
    int sum_1 = 0, sum_2 = 0, sum_3 = 0;
    int number, a, b;
 
    cout << "Введите число: ";
    cin >> number;
 
    cout << "Введите а: ";
    cin >> a;
 
    cout << "Введите b: ";
    cin >> b;
 
    for(size_t i = 0; i < size; i++)
    {
        if(i % 2 == 0)
            sum_1 += array[i];
        if(array[i] % number == 0)
            sum_2 += array[i];
        if((array[i] % a == 0) || (array[i] % b == 0))
            sum_3 += array[i];
    }
    
    cout << "Сумма нечетных элементов: " << sum_1 << endl;
    cout << "Сумма кратных числу: " << sum_2 << endl;
    cout << "Сумма кратных а или b: " << sum_3 << endl;
 
    delete [] array;
 
    system("pause");
    return 0;
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
13.01.2014, 18:23     Расчет суммы или количества элементов массива, удовлетворяющих некоторому условию #4
Ну, и для разнообразия:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <iterator>
#include <array>
#include <algorithm>
#include <functional>
 
template<typename InputIt, typename T,
         typename UnaryPredicate,
         typename BinaryOperation = std::plus<typename std::iterator_traits<InputIt>::value_type> >
T accumulate_if(InputIt first, InputIt last, T init, UnaryPredicate p,
             BinaryOperation op = std::plus<typename std::iterator_traits<InputIt>::value_type>())
{
   for (; first != last; ++first) {
      if (p(*first))
         init = op(init, *first);
   }
   return init;
}
 
namespace pl = std::placeholders;
 
template <typename T>
struct is_even
{
   bool value = true;
   bool operator ()(const T&)
   {
      value ? value = false : value = true;
      return value;
   }
};
 
template <typename T>
bool is_multiple(const T& lhs, const T& rhs)
{
   return (lhs % rhs) ? false : true;
};
 
int main()
{
   std::array<int, 7> ar {30,2,7,6,8,5,15};
 
   //а) сумму нечетных элементов;
   std::cout << accumulate_if(ar.begin(), ar.end(), 0u,
                              std::bind(std::logical_not<bool>(),
                              std::bind(is_even<int>(), pl::_1))
                              ) << "\n";
   //б) сумму элементов, кратных заданному числу;
   const int multiple = 2;
   std::cout << accumulate_if(ar.begin(), ar.end(), 0u,
                              std::bind(std::equal_to<bool>(),
                              std::bind(std::modulus<int>(), pl::_1, multiple), 0)
                              ) << "\n";
   //в) сумму элементов массива, кратных а или b.
   const int a = 3, b = 5;
   std::cout << accumulate_if(ar.begin(), ar.end(), 0u,
                              std::bind<bool>(std::logical_and<bool>(),
                              std::bind(is_multiple<int>, pl::_1, a),
                              std::bind(is_multiple<int>, pl::_1, b))
                              ) << "\n";
}
Yandex
Объявления
13.01.2014, 18:23     Расчет суммы или количества элементов массива, удовлетворяющих некоторому условию
Ответ Создать тему
Опции темы

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