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

Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов - C++

Восстановить пароль Регистрация
 
Алёнка1990
Сообщений: n/a
19.11.2012, 11:34     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов #1
Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов

Добавлено через 12 минут
Дан массив задающийся рандомно. Размерность массива от -50 до + 50
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 11:34     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов
Посмотрите здесь:

Найти непрерывный участок C++
C++ Действие с матрицей (Найти наименьшее из значений элементов столбца, который имеет наибольшую сумму модулей элементов)
C++ Определить номер подматрицы, среднее арифметическое элементов которой имеет наибольшее значение.
C++ Найти непрерывный участок из 10 элементов, сумма которых максимальна
Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 11:59     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов #2
Цитата Сообщение от Алёнка1990 Посмотреть сообщение
который имеет наибольшее среднее значение элементов
А можно объяснить как это? Ну например для такой последовательности 14 -42 35 2 23 -16 -38 42 -36 26 36 5 -7 -7 -32 7 -49 32 12 -32 ?
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.11.2012, 12:05     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов #3
yuron_477, сумма десяти последовательных элементов должна быть максимальна. Надо реализовать скользящее суммирование.
Алёнка1990, что значит размерность от -50? Может значения в массиве от -50?
Алёнка1990
Сообщений: n/a
19.11.2012, 12:39     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов #4
Да значение в массиве от -50

Добавлено через 32 минуты
grizlik78, Да значение в массиве от -50
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
19.11.2012, 12:56     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов #5
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
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "time.h"
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <numeric>
#include <ctime>
 
int sum(int *a)
{
    int res=0;
    for (int i = 0; i < 10; i++)
    {
        res += a[i];
    }
    return (int)(res/2);
}
 
int main()
{
    ::std::srand((unsigned int)::std::time(NULL));
    const int N = 1000;
    int a[N] = { 0 };
         for ( int i = 0 ; i < N ; i++ )
        {
            a[i] = ::std::rand()%100-50;
             ::std::cout << a[i] << ::std::endl;
        }
        int saveI, saveMax = 0;
        for (int i = 0 ; i < N-10 ; i++ )
        {
            if (sum(&a[i]) > saveMax || i == 0)
            {
                saveI = i;
                saveMax = sum(&a[i]);
            }
        }
        for ( int  j = saveI ; j < saveI+ 10 ; j++ )
        {
            ::std::cout << j << " " << a[j] << ::std::endl;
        }
        ::std::cout << "среднее " << saveMax << ::std::endl;
}
может есть более продвинутые способы для решения этой задачки

Добавлено через 1 минуту
PS если всё правильно с тебя мощный магнитик
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
19.11.2012, 12:58     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов #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
41
42
43
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
 
 
using namespace std;
 
const int N = 100; //число элементов массива
const int n = 10;  //длина последвательности
 
int main()
{
    srand((unsigned)time(NULL));
    int arr[N] = {0};
    int _i = 0;
    
    float res = -1000;
    
    cout << "Given: \n";
    for(int i = 0; i < N; i++) {
        if(!(i%10)) cout << endl;//по 10 элементов в строке (для вывода)
        arr[i] = rand()%102-51;
        cout << setw(4) << arr[i];
    }
    cout << endl;
    for(int i = 0; i < N - n; i++) {
        float tmp = 0;
        for(int j = i; j < i+n; j++) {
            tmp += arr[j];
        }
        tmp /= n;   //ср арифметическое
        if(tmp > res) {
            res = tmp;
            _i = i;
        }
    }
    cout << endl;
    for(int i = _i, j = 1; i < _i+n; i++, j++ ) {
        cout << "arr[" << i << "] = " << arr[i] << endl;
    }
    cout << "Result: from i[" << _i << "] to i[" << _i+n-1<< "] = " << res << endl;
}
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.11.2012, 13:08     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов #7
XRuZzz, почему тут
Цитата Сообщение от XRuZzz Посмотреть сообщение
return (int)(res/2);
А вообще да, можно было решить оптимальнее.
Во-первых, не считать среднее арифметическое, а ограничится только суммой. И дальше сравнивать сумму.
Во-вторых, посчитать сумму один раз, а затем вычитать из нее крайний левый элемент и добавлять новый элемент справа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 13:11     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов
Еще ссылки по теме:

Найти столбик, в котором среднее арифметическое значение из положительных элементов имеет минимальное значение C++
Найти среди элементов массива два, модуль разности которых имеет наибольшее значение C++
C++ Найти непрерывный участок последовательности

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

Или воспользуйтесь поиском по форуму:
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
19.11.2012, 13:11     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов #8
ясно
Цитата Сообщение от I.M. Посмотреть сообщение
XRuZzz, почему тут
тсссс

PS почему? почему! по невнимательности
Yandex
Объявления
19.11.2012, 13:11     Найти непрерывный участок из 10 элементов, который имеет наибольшее среднее значение элементов
Ответ Создать тему
Опции темы

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