0 / 0 / 0
Регистрация: 14.09.2017
Сообщений: 2
1

В каждом блоке из 8 элементов массива вычислить среднее арифметическое и найти максимальное

14.09.2017, 14:32. Показов 1066. Ответов 3
Метки нет (Все метки)

Здравствуйте! Прошу помощи - задали задачку по C++
Обработать по частям массив вещественных чисел динамически размещенный в памяти(операция New)
размер массива произвольный и делится на 8.
В каждом блоке из 8 элементов вычислить среднее арифметическое и найти N блока в котором оно максимальное
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2017, 14:32
Ответы с готовыми решениями:

Найти среднее арифметическое элементов в каждом столбце массива
Помогите написать программу и блок схему,пожалуйста: Найти среднее арифметическое элементов в...

Найти среднее арифметическое всех элементов массива х и номера элементов, имеющих минимальное и максимальное значения
Сгенерировать массив из 18 элементов случайных чисел от 0 до 100. Вывести массив на экран в три...

Найти максимальное и минимальное значения среди элементов массива и их среднее арифметическое
Помогите пожалуйста с заданием: В массиве А(20) найти максимальное и минимальное значения среди...

Найти сумму,минимальное,максимальное и среднее арифметическое элементов одномерного массива
Помогите найти сумму,минимальное,максимальное и среднее арифметическое элементов одномерного...

3
642 / 449 / 209
Регистрация: 06.09.2013
Сообщений: 1,240
14.09.2017, 15:34 2
Лучший ответ Сообщение было отмечено Matilda88 как решение

Решение

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
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <limits>
 
using namespace std;
 
#define BLOCK_SIZE 8
 
int main(){
    int array_length = 64;
    double *arr = new double[array_length];
 
    srand(time(NULL));
    for(int i = 0; i < array_length; i++) {
        arr[i] = (double)rand() / RAND_MAX;
    }
 
    int max_avg_block_index = 0;
    double max_avg_value = numeric_limits<double>::min();
 
    int block_count = array_length / BLOCK_SIZE;
    for(int block_index = 0; block_index < block_count; block_index++) {
        double avg = 0.0;
        for(int i = 0; i < BLOCK_SIZE; i++) {
            avg += arr[block_index * BLOCK_SIZE + i];
        }
        avg /= BLOCK_SIZE;
        if(avg > max_avg_value) {
           max_avg_value = avg;
           max_avg_block_index = block_index;
        }
    }
    delete [] arr;
    cout << "Maximum average value: " << max_avg_value << " in block " <<  max_avg_block_index << endl;
 
}
0
0 / 0 / 0
Регистрация: 14.09.2017
Сообщений: 2
14.09.2017, 16:00  [ТС] 3
Спасибо!
0
279 / 251 / 209
Регистрация: 14.11.2016
Сообщений: 948
14.09.2017, 16:16 4
Matilda88,
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
#include <iostream>
#include <iterator>
#include <algorithm>
#include <numeric>
#include <cstdlib>
#include <ctime>
 
const std::size_t MAX_VALUE_BEFORE_POINT = 100U;
const std::size_t MAX_VALUE_AFTER_POINT = 100U;
const std::size_t SIZE_BLOCK = 8U;
 
int main()
{
    std::srand(unsigned(std::time(NULL)));
    std::cout << "Ente the size of array: ";
    std::size_t N;
    std::cin >> N;
    if(!(N % SIZE_BLOCK))
    {
        const std::size_t M(N / SIZE_BLOCK);
        double *arr = new double[N];
        double *res_arr = new double[M];
        double *r_begin(res_arr), *r_end(res_arr + M);
        double *a_begin(arr), *a_end(arr + N); 
        std::for_each(a_begin, a_end, [](double &value) {
             value = (double)(std::rand() % MAX_VALUE_BEFORE_POINT)
                 + (0.01 * (std::rand() % MAX_VALUE_AFTER_POINT));
        });
        std::cout << "arr: ";
        std::copy(a_begin, a_end, std::ostream_iterator<double>(std::cout, " "));
        std::cout << std::endl;
        {
            double *start_pos(a_begin), *finish_pos(a_begin + SIZE_BLOCK);
            std::for_each(r_begin, r_end, [&start_pos, &finish_pos](double &res_value) {
                res_value = (std::accumulate(start_pos, finish_pos, 0.0) / SIZE_BLOCK);
                start_pos += SIZE_BLOCK;
                finish_pos += SIZE_BLOCK;
            });
        }
        std::cout << "res_arr: ";
        std::copy(r_begin, r_end, std::ostream_iterator<double>(std::cout, " "));
        std::cout << std::endl << "max element of res_arr: "
            << *(std::max_element(r_begin, r_end)) << std::endl;
        delete[] arr;
        delete[] res_arr;
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2017, 16:16
Помогаю со студенческими работами здесь

Найти среднее арифметическое элементов массива х(n), исключив из них максимальное и минимальное значение
Найти среднее арифметическое элементов массива х(n), исключив из них максимальное и минимальное...

Вычислить максимальное среднее арифметическое среди элементов матрицы
В прямоугольной матрице вычислить максимальное среднее арифметическое среди всех вычисленных по...

Определить максимальное и среднее арифметическое значение элементов массива
Задача №18. Дан одновременный массив положительных элементов длиной М. Определить максимальное и...

Определить среднее арифметическое чётных элементов в каждом столбце массива
Определить среднее арифметическое чётных элементов в каждом столбце массива.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru