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

В одномерном массиве посчитать сумму элементов - C++

Восстановить пароль Регистрация
 
 
vozhd23
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 31
28.06.2014, 16:37     В одномерном массиве посчитать сумму элементов #1
В одномерном массиве посчитать сумму элементов , значения которых, соответствуют диапазону, введенного с клавиатуры.

Помогите пожалуста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2014, 16:37     В одномерном массиве посчитать сумму элементов
Посмотрите здесь:

C++ В одномерном массиве посчитать сумму элементов,находящихся в четных позициях и т.д
C++ В одномерном массиве посчитать сумму элементов до максимального.Оформить через контейнер Vector.
В одномерном массиве посчитать сумму элементов, находящихся в чётных позициях C++
В одномерном массиве посчитать сумму элементов после последнего положительного элемента C++
C++ В одномерном массиве посчитать сумму элементов, находящихся в четных позициях
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
butoxors1
0 / 0 / 1
Регистрация: 21.05.2013
Сообщений: 26
28.06.2014, 16:43     В одномерном массиве посчитать сумму элементов #2
1)заполняешь массив
2)вводишь диапазоны от и до
3)в цикле уже сравниваешь, если элемент больше "от" и меньше "до", то суммируем
вроде алгоритм такой
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
28.06.2014, 16:59     В одномерном массиве посчитать сумму элементов #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
//Заголовочный файл консольного ввод-вывода
#include <iostream>
//Заголовочный файл системного времени
#include <ctime>
//Заголовочный файл для генератора случайных чисел
#include <cstdlib>
 
 
//Главная функция
int main()
{
    setlocale(LC_ALL, "");//для вывод русских символов
    //Создаем массив из 20 элементов
    const int n = 20;
    int a[n];
    //Инициализируем генератор псевдослучайных чисел
    srand(unsigned(time(NULL)));
    //Заполняем массив случайными значениями от 1 до 20
    for (int i = 0; i < n; i++)
    {   
        a[i] = rand() % n + 1;
        std::cout << a[i] << ' '; // и выводим их
    }
    std::cout << std::endl; //выводим перевод строки 
    //Создаем переменные для диапазона
    int x, y;
    //Выводим предложение ввести диапазон
    std::cout << "Введите диапазон значений через пробел: ";
    //Вводим с конслои значения диапазона
    std::cin >> x >> y;
    //Делаем, чтобы x был меньше y
    if (x > y)
    {
        int temp = y;
        y = x;
        x = temp;
    }
    //Подсчитываем сумму значений из диапазона
    //Создаем переменную для суммы
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] >= x && a[i] <= y)
            sum += a[i];
    }
    //Выводим сумму на экран
    std::cout << sum << std::endl;
    
    return 0;
}
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
28.06.2014, 17:07     В одномерном массиве посчитать сумму элементов #4
Kerry_Jr, комментариев много не бывает
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
28.06.2014, 17:24     В одномерном массиве посчитать сумму элементов #5
Этот пользователь уже не первый раз сегодня просит помощи. И в первый раз попросил прокомментировать каждую команду. Вот и сейчас, чтобы дважды не переписывать код (с комментами и без), я решил сразу все прокомментировать.
gru74ik
Модератор
 Аватар для gru74ik
3077 / 1322 / 164
Регистрация: 20.02.2013
Сообщений: 3,757
Записей в блоге: 17
28.06.2014, 17:29     В одномерном массиве посчитать сумму элементов #6
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Этот пользователь уже не первый раз сегодня просит помощи. И в первый раз попросил прокомментировать каждую команду. Вот и сейчас, чтобы дважды не переписывать код (с комментами и без), я решил сразу все прокомментировать.
Ну ты ему просто всё на блюдечке с голубой каёмочкой преподнёс )))
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
28.06.2014, 17:32     В одномерном массиве посчитать сумму элементов #7
Вылосыпэд:
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
62
63
64
65
66
67
#include <iostream>
#include <vector>
#include <numeric>
#include <functional>
 
template < typename operation1 , typename operation2 , typename operation3 >
class compose_f_gx_hx_t :
                       public std::unary_function<typename operation1::argument_type,typename operation3::result_type> {
public:
   compose_f_gx_hx_t ( const operation1 & op1_ , const operation2 & op2_ , const operation3 & op3_ ) : op1(op1_),op2(op2_), op3(op3_){
   }
   typename operation3::result_type operator()(const typename operation1::argument_type & x ) const {
      return op3 ( op1(x) , op2(x) ) ;
   }
private:
   operation1 op1 ;
   operation2 op2 ;
   operation3 op3 ;
} ;
 
template < typename operation1 , typename operation2 , typename operation3 >
compose_f_gx_hx_t < operation1 , operation2 , operation3 > compose_f_gx_hx ( const operation1 & op1 , const operation2 & op2 , const operation3 & op3 )
{
   return compose_f_gx_hx_t < operation1 , operation2 , operation3 > ( op1 , op2 , op3 ) ;
}
 
 
template < typename operation1 , typename T >
class compose_plus_t :
                    std::binary_function <T,T,T> {
public:
   compose_plus_t ( const operation1 & op ) : comp(op) {
   }
   T operator() (const T& x, const T& y) const {
      return x + ( comp(y) ? y : T() );
   }
private:
   operation1 comp ;
};
 
template < typename OP1 >
compose_plus_t < OP1 , typename OP1::argument_type > compose_plus ( const OP1 & op )
{
   return compose_plus_t < OP1 , typename OP1::argument_type > ( op ) ;
}
 
 
int main() {
   std::vector<int> vec = {3 , 4 , 7 , 8 , 9 , 0 };
   int f = 0 , s = 0 ;
   std::cout << "\nInput interval (min,max);" << std::endl ;
   std::cin >> f >> s ;
   std::cout << "\nResult:" << 
                              std::accumulate( 
                                              vec.begin() , 
                                              vec.end() , 
                                              0 , 
                                              compose_plus(
                                                           compose_f_gx_hx ( 
                                                                            std::bind2nd(std::greater<int>(), f) , 
                                                                            std::bind2nd(std::less<int>(),s) , 
                                                                            std::logical_and<bool>() 
                                                                           )
                                                          ) 
                                              ) 
                           << std::endl ;
}
cooller
28.06.2014, 17:35
  #8

Не по теме:

Croessmah, как раз вариант для сдачи в универе

gru74ik
Модератор
 Аватар для gru74ik
3077 / 1322 / 164
Регистрация: 20.02.2013
Сообщений: 3,757
Записей в блоге: 17
28.06.2014, 17:36     В одномерном массиве посчитать сумму элементов #9
Croessmah, зря ты так. Он ведь теперь попросит каждую строчку прокомментировать
Croessmah
28.06.2014, 17:41
  #10

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
Он ведь теперь попросит каждую строчку прокомментироват
а че тут комментировать то? Пару сложений хотя и пары то не найдется

gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
28.06.2014, 18:38     В одномерном массиве посчитать сумму элементов #11
Коль мода пошла на STL
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
#include <algorithm>
#include <random>
#include <array>
#include <chrono>
#include <utility>
#include <iostream>
int main()
{
    std::array<int,10> intArray;
    std::mt19937 randomGen(std::chrono::system_clock::now().time_since_epoch().count());
    std::uniform_int_distribution<int> distribution {0, 100};
    std::generate(std::begin(intArray), std::end(intArray), [&]{ return distribution(randomGen);});
    for(int number : intArray)
        std::cout << number << ' ';
    std::cout << std::endl;
 
    std::pair<int, int> range;
    std::cout << "Type the range: ";
    std::cin >> range.first >> range.second;
 
    int sum  = std::accumulate(std::begin(intArray), std::end(intArray), 0, [&range](auto init, auto elem) -> decltype(init + elem) {
            return (elem > range.first && elem < range.second) ? init + elem : init; });
 
    std::cout <<"Sum: " <<  sum << std::endl;
    return EXIT_SUCCESS;
}
Добавлено через 5 минут

Не по теме:

Croessmah, я не заметил твой вариант сразу, если б не ввод с клавиатуры то в compile time бы захреначил?

Croessmah
28.06.2014, 18:48
  #12

Не по теме:

Цитата Сообщение от gromo Посмотреть сообщение
Croessmah, я не заметил твой вариант сразу, если б не ввод с клавиатуры то в compile time бы захреначил?
ага

gray_fox
28.06.2014, 20:40
  #13

Не по теме:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <utility>
 
#include <boost/range/numeric.hpp>
#include <boost/range/adaptor/filtered.hpp>
 
 
int main() {
   int const array[] = {3, 4, 7, 8, 9, 0};
   auto const range = std::make_pair(4, 10);
 
   auto const in_range = [](auto const& range) {
      return [=](auto const& value) {
         return value >= range.first && value < range.second;
      };
   };
 
   auto const result = boost::accumulate(array | boost::adaptors::filtered(in_range(range)), 0);
 
   std::cout << result << std::endl;
}

Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
28.06.2014, 20:50     В одномерном массиве посчитать сумму элементов #14
Лямбды не нужны, только функциональная композиция, только boost::bind!
gray_fox
28.06.2014, 20:54
  #15

Не по теме:

Цитата Сообщение от Voivoid Посмотреть сообщение
Лямбды не нужны, только функциональная композиция, только boost::bind!
C++
1
filtered(_1 >= range.first && _1 < range.second)
Так что ли?)

gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
28.06.2014, 20:56     В одномерном массиве посчитать сумму элементов #16
Цитата Сообщение от gray_fox Посмотреть сообщение
array | boost::adaptors::filtered(in_range(range))
а как так вообще? в массив с данными через | добавляется какой-то код? Я с бустом не работал сильно...
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.06.2014, 20:57     В одномерном массиве посчитать сумму элементов #17
Цитата Сообщение от gromo Посмотреть сообщение
C++
1
array | boost::adaptors::filtered(in_range(range))
Это просто сахар для
C++
1
boost::filter(array, in_range(range))
gromo
28.06.2014, 20:59
  #18

Не по теме:

Цитата Сообщение от gray_fox Посмотреть сообщение
Это просто сахар
неплохо, даже очень

Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
28.06.2014, 21:30     В одномерном массиве посчитать сумму элементов #19
Цитата Сообщение от gray_fox Посмотреть сообщение
Так что ли?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template <typename T>
auto make_filter( const std::pair<T, T>& a_limits ) {
    return boost::bind( std::greater<T>(), _1, a_limits.first ) &&
           boost::bind( std::less<T>(), _1, a_limits.second );
}
 
int main(int argc, char *argv[])
{
    static const auto array = { 3, 4, 7, 8, 9, 0 };
    static const auto range = std::make_pair( 4, 10 );
 
    const auto result = boost::accumulate(array | boost::adaptors::filtered(make_filter(range)), 0);
    std::cout << result << std::endl;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2014, 22:44     В одномерном массиве посчитать сумму элементов
Еще ссылки по теме:

C++ В одномерном массиве посчитать сумму элементов до максимального.
В одномерном массиве посчитать сумму элементов до минимального. C++
В одномерном массиве посчитать сумму элементов, номера которых являются простыми числами C++

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

Или воспользуйтесь поиском по форуму:
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
28.06.2014, 22:44     В одномерном массиве посчитать сумму элементов #20
Voivoid, тогда уж std::bind
Yandex
Объявления
28.06.2014, 22:44     В одномерном массиве посчитать сумму элементов
Ответ Создать тему
Опции темы

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