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

Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива - C++

Восстановить пароль Регистрация
 
MarLuckDen
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 2
07.06.2013, 00:25     Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива #1
Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива.
Используя эту процедуру, обработать три одномерных массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 00:25     Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива
Посмотрите здесь:

Произведение элементов массива, расположенных между максимальным и минимальным элементами C++
Произведение элементов массива, расположенных между максимальным и минимальным элементами C++
C++ произведение элементов массива, расположенных между максимальным и минимальным элементами.
C++ Произведение элементов массива, расположенных между максимальным и минимальным элементами
C++ Произведение элементов массива, расположенных между максимальным и минимальным элементами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
07.06.2013, 01:51     Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива #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
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <utility>
#include <algorithm>
#include <random>
#include <vector>
#include <iterator>
#include <cstddef>
#include <string>
 
template <typename T>
void sum_and_amount(typename std::vector<T>::const_iterator beg,
                    typename std::vector<T>::const_iterator end,
                    T &sum, size_t &amount)
{
    sum = amount = 0;
    if (end < beg)
        return;
    while (beg != end)
    {
        sum += *beg;
        amount++;
        ++beg;
    }
}
 
template <typename T>
void print_info(typename std::vector<T>::const_iterator beg,
                typename std::vector<T>::const_iterator end)
{
    auto p = std::minmax_element(beg, end);
    T sum;
    size_t amount;
    sum_and_amount(p.first, p.second, sum, amount);
    std::cout << "Sum: " << sum << "\nAmount: " << amount << std::endl;
}
 
 
int main()
{
    const std::size_t sizeA = 10, sizeB = 20, sizeC = 15;
    std::vector<int> A(sizeA), B(sizeB), C(sizeC);
    std::mt19937 gen {std::random_device()() };
    std::uniform_int_distribution<int> uid(0, 100);
    auto gen_v = [&uid, &gen](std::vector<int> &v)
    {
        std::generate(v.begin(), v.end(), [&uid, &gen]() -> int { return uid(gen); } );
    };
    auto print_v = [](const std::vector<int> &v)
    {
        std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, " ") );
        std::cout << std::endl;
    };
    auto press_key_to_win = [&gen_v, &print_v](const std::string &name, std::vector<int> &v)
    {
        gen_v(v);
        std::cout << name << ":\n";
        print_v(v);
        print_info<int>(v.cbegin(), v.cend());
    };
 
    press_key_to_win("A", A);
    press_key_to_win("B", B);
    press_key_to_win("C", C);
}
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
07.06.2013, 02:02     Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива #3
MrGluck, посылает исключение
Кликните здесь для просмотра всего текста
terminate called after throwing an instance of 'std::runtime_error'
what(): random_device::random_device(const std::string&)


можно вот так по простому:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector<int> vec {5, 5, 5, 5};
    auto min = std::min_element( std::begin(vec), std::end(vec) ),
         max = std::max_element( std::begin(vec), std::end(vec) );
    if (min > max) swap(min, max);
    if (min == max) --min;
    std::cout << "Sum of elemnts between min and max: "
         << std::accumulate( min + 1, max, 0, std::plus<int>() ) << std::endl
         << "Count of these elemnts: " << std::distance( min + 1, max );
    return 0;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
07.06.2013, 02:07     Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива #4
Olivеr, поздравляю, ваш mingw устарел
std::random_device

Добавлено через 44 секунды
в задании вроде как процедуру требуется написать, а accumulate и distance - это без понтов

Добавлено через 46 секунд
Цитата Сообщение от Olivеr Посмотреть сообщение
if (min > max) swap(min, max);
кстати да, не догадался
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
07.06.2013, 02:16     Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива #5
Цитата Сообщение от MrGluck Посмотреть сообщение
Olivеr, поздравляю, ваш mingw устарел std::random_device
У меня сборка от этого человека на основе 4.7.3. Не знаю почему так происходит. Ну да ладно, я все равно не так часто пользуюсь рандомом
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,397
07.06.2013, 02:19     Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива #6
Olivеr, у меня его же сборка, просто надо обновиться
http://sourceforge.net/projects/mingwbuilds/
Кстати, он пообещал мне, что займется данной проблемой, сейчас у него приоритетным является все же LWS, но, видимо, на работе завал.
Yandex
Объявления
07.06.2013, 02:19     Составить процедуру определения суммы и количества элементов, расположенных между минимальным и максимальным элементами массива
Ответ Создать тему
Опции темы

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