Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Алёнка1990
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 2
1

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

19.11.2012, 11:34. Просмотров 1268. Ответов 7
Метки нет (Все метки)

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

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

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

Найти непрерывный участок из 10 элементов, сумма которых максимальная
Задание такое: Найти непрерывный участок из 10 элементов, сумма которых...

Найти непрерывный участок из 10 элементов, сумма которых максимальна
Найти непрерывный участок из 10 элементов, сумма которых максимальна. Если...

Определить номер подматрицы, среднее арифметическое элементов которой имеет наибольшее значение.
Помогите пожалуйста решить задачу, очень нужно В квадратной матрице A(m,n)...

Как найти непрерывный участок элементов массива, сумма которых максимальна?
Нужно найти непрерывный участок массива из 10 элементов, сумма которых...

7
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
19.11.2012, 11:59 2
Цитата Сообщение от Алёнка1990 Посмотреть сообщение
который имеет наибольшее среднее значение элементов
А можно объяснить как это? Ну например для такой последовательности 14 -42 35 2 23 -16 -38 42 -36 26 36 5 -7 -7 -32 7 -49 32 12 -32 ?
0
grizlik78
Эксперт С++
1988 / 1480 / 192
Регистрация: 29.05.2011
Сообщений: 3,059
19.11.2012, 12:05 3
yuron_477, сумма десяти последовательных элементов должна быть максимальна. Надо реализовать скользящее суммирование.
Алёнка1990, что значит размерность от -50? Может значения в массиве от -50?
0
Алёнка1990
0 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 2
19.11.2012, 12:39 4
Да значение в массиве от -50

Добавлено через 32 минуты
grizlik78, Да значение в массиве от -50
0
XRuZzz
Антикодер
1494 / 660 / 37
Регистрация: 15.09.2012
Сообщений: 2,674
19.11.2012, 12:56 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 если всё правильно с тебя мощный магнитик
0
denys_l
52 / 52 / 10
Регистрация: 26.09.2011
Сообщений: 186
19.11.2012, 12:58 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;
}
0
I.M.
567 / 550 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
19.11.2012, 13:08 7
XRuZzz, почему тут
Цитата Сообщение от XRuZzz Посмотреть сообщение
return (int)(res/2);
А вообще да, можно было решить оптимальнее.
Во-первых, не считать среднее арифметическое, а ограничится только суммой. И дальше сравнивать сумму.
Во-вторых, посчитать сумму один раз, а затем вычитать из нее крайний левый элемент и добавлять новый элемент справа
2
XRuZzz
Антикодер
1494 / 660 / 37
Регистрация: 15.09.2012
Сообщений: 2,674
19.11.2012, 13:11 8
ясно
Цитата Сообщение от I.M. Посмотреть сообщение
XRuZzz, почему тут
тсссс

PS почему? почему! по невнимательности
0
19.11.2012, 13:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 13:11

Найти непрерывный участок массива, в котором сумма положительных элементов максимальна
Решите подобную задачу: Создать массив целых чисел и заполнить его...

Найти столбик, в котором среднее арифметическое значение из положительных элементов имеет минимальное значение
Никак не могу понять задачу, помогите написать программу, очень нужно ! В...

Найти среди элементов массива два, модуль разности которых имеет наибольшее значение
Задача: Сформировать целочисленный массив A(N), эл-ми которого являются...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru