Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31

Найти порядковый номер массива, среднее арифметическое значение элементов которого максимально

24.10.2009, 19:10. Показов 1744. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дана задача, совсем запутался уже, помогите пожалуйста:

Написать функцию, получающую в качестве параметров два массива целого типа произвольного размера и возвращающую порядковый номер массива, среднее арифметическое значение элементов которого максимально.

В главной программе описать три массива целого типа: А раз мерностью 5*6, В размерностью 4*4 и С размерностью 3*4.

Массивы А и В инициализировать при описании, а массив С ввести с клавиатуры. С помощью разработанной функции определить и вывести на экран имя массива, имеющего наибольшее сред нее арифметическое значение элементов.


Может изначально неправильно задаю функцию? Где мне сравнивать массивы и как? Инициализцация при описании, что это значит? Изначально сказано, что функция получает в качестве параметров 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
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <conio.h>
using namespace std;
int f(int A[5][6], int B[4][4], int C[3][4])
{
    int S,i,j;
    for(int i=0; i<5; i++)
    {
        for(int j=0; j<6; j++)
        {
            int S=S+(j+i)/(j*i);
                return S;
        }
    }
}
int main()
{
    int A[5][6]; 
    int B[4][4];
    int C[3][4];
    for (int i=0; i<3; i++)
    {
        for(int j=0; j<4; j++)
        {
            cout<<"C["<<i<<"]["<<j<<"]= "; 
            cin>>C[i][j];
        }
    }
    f(A, B, C);
    for(int i=0; i<5; i++)
    {
        cout<<"[ ";
        for(int j=0; j<6; j++)
        {
            cout<<f(A,B,C)<<" ";
        }
        cout<<"]\n";
    }
    return 0;
}
Задача конечно не дописана и с ошибками, помогите, пожалуйста, все исправить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2009, 19:10
Ответы с готовыми решениями:

Найти среднее арифметическое элементов массива, значение которого меньше заданного
Найти среднее арифметическое элементов массива, значение которого меньше заданного, в каждом столбце массива. Помогите, в чем ошибка?...

Вывести порядковый номер последнего из элементов массива значение которого принадлежит заданному интервалу
Дан целочисленный массив A размера 10. Вывести порядковый номер последнего из тех его элементов AK, которые удовлетворяют двойному...

Определить индекс столбца матрицы, среднее арифметическое элементов которого максимально
Дана прямоугольная матрица b. Определить индекс столбца, среднее арифметическое элементов которого максимально. Если таких столбцов...

18
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 19:15
vonorf, Я так понимаю, нужно на С++ ?
0
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 19:19  [ТС]
Да, C++ на Visual Studio 2008 все пишу
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:06
Цитата Сообщение от vonorf Посмотреть сообщение
Написать функцию, получающую в качестве параметров два массива целого типа произвольного размера и возвращающую порядковый номер массива, среднее арифметическое значение элементов которого максимально.
Вот:
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
struct fill_functor {
    void operator() (std::vector<int>& v) {
        std::generate(v.begin(), v.end(), rand);
    }
};
 
struct count_functor {
    count_functor():count(0) {}
    void operator() (const std::vector<int>& v) {
        count += std::accumulate(v.begin(), v.end(), 0);
    }
    unsigned int count;
};
 
int what_max(const std::vector<std::vector<int>>& arr1, const std::vector<std::vector<int>>& arr2) {
    /** подсчитываем среднее арифметическое первого массива */
    count_functor result1 = std::for_each(arr1.begin(), arr1.end(), count_functor());
    /** подсчитываем среднее арифметическое второго массива */
    count_functor result2 = std::for_each(arr2.begin(), arr2.end(), count_functor());
    
    return (result1.count < result2.count);
}
 
int main(int argc, const char** argv)  {
    const int size = 8;
    /** декларируем квадратный двумерный массив */
    std::vector<std::vector<int> > array1(size);
    std::vector<std::vector<int> > array2(size);
    
    /** перемеряем столбцы первого массива */
    std::for_each(array1.begin(), array1.end(),
                        std::bind2nd(
                                            std::mem_fun_ref(&std::vector<int>::resize), array1.size()
                                        )
                    );
    /** перемеряем столбцы второго массива */
    std::for_each(array2.begin(), array2.end(),
                        std::bind2nd(
                                            std::mem_fun_ref(&std::vector<int>::resize), array2.size()
                                        )
                    );
    
    /** заполняем случайными значениями */
    std::for_each(array1.begin(), array1.end(), fill_functor());
    std::for_each(array2.begin(), array2.end(), fill_functor());
    
    int max = what_max(array1, array2);
    
    return 0;
}
Тут много кода по подготовке массивов. Вам нужна функция what_max(array1, array2) и функтор struct count_functor
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:08  [ТС]
спасибо, но компилятор 84 ошибки выдал)
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:09
Цитата Сообщение от vonorf Посмотреть сообщение
спасибо, но компилятор 84 ошибки выдал)

А хидеры подключили?
C++
1
2
3
4
5
#include <vector>
#include <algorithm>
#include <iostream>
#include <functional>
#include <numeric>
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:12  [ТС]
подключил да не те)

Добавлено через 1 минуту
программа запускается и сразу предлагает выйти
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:14
Цитата Сообщение от vonorf Посмотреть сообщение
программа запускается и сразу предлагает выйти
Ну естественно.

Добавь перед return 0;
C++
1
2
std::cout << max << std::endl << "Enter for exit" << std::endl;
std::cin >> max;
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:16  [ТС]
Тоесть ответ просто 1?? Как же ручной ввод массива С?
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:17
Если сумма первой матрицы, больше суммы второй, выведет 0, иначе 1.
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:19  [ТС]
Я просто в данном коде хуже намного соображаю, такое нам не показывали в универе
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:20
Цитата Сообщение от vonorf Посмотреть сообщение
Я просто в данном коде хуже намного соображаю, такое нам не показывали в универе
Я тебя спросил, "На С++ ?", ты ответил ДА. Это он и есть.

п.с.
спасибо бы сказал чтоли...
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:23  [ТС]
просто вот видешь как я сначало написал в первом сообщении? Вот такое и показывали))) спасибо ща расставлю на все ответы.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:27
Цитата Сообщение от vonorf Посмотреть сообщение
просто вот видешь как я сначало написал в первом сообщении?
С утра напишу в таком стиле(надеюсь меня не застыдят)
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:32  [ТС]
Препод офигеет от написанного Когда я его спросил как сделать так, чтобы написав слово exit программа завершилась, он ответил на это, что такое невозможно. Думаю в такой ситуации не застыдят. Давно понял что ТАМ меня ничему не научат, потихоньку, насколько хватает времени читаю книги по C/C++, и топики на этом форуме. Надеюсь путь правильный. Огромное тебе еще раз спасибо за проявленную помощь, а если еще и хватит смелости написать в том стиле, что я предложил цены тебе не будет
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:34
Цитата Сообщение от vonorf Посмотреть сообщение
Думаю в такой ситуации не застыдят
В смысле, обитатели форума
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:34  [ТС]
Я так и понял)
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
25.10.2009, 16:26
Как и обещал.
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
#include <stdio.h>
 
const int x = 8;
const int y = 8;
 
int what_max(int a[x][y], int b[x][y]) {
    unsigned int summ_a = 0;
    unsigned int summ_b = 0;
    
    for ( int i = 0; i < x; i++) {
        for ( int j = 0; j < y; j++ ) {
            summ_a += a[i][j];
        }
    }
    for ( int i = 0; i < x; i++) {
        for ( int j = 0; j < y; j++ ) {
            summ_b += b[i][j];
        }
    }
    
    return (summ_a > summ_b);
}
 
int main(int argc, const char** argv) {
    int a[x][y] = {0};
    int b[x][y] = {0};
    
    for ( int idx = 0; idx < x*y; idx++ ) {
        ((int*)a)[idx] = rand();
        ((int*)b)[idx] = rand();
    }
    
    int result = what_max(a, b)+1;
    printf("matrix %d\n", result);
    return 0;
}
1
7 / 7 / 0
Регистрация: 05.10.2009
Сообщений: 31
25.10.2009, 16:48  [ТС]
Огромное спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2009, 16:48
Помогаю со студенческими работами здесь

Матрицы. Определить индекс стобца, среднее арифметическое элементов которого максимально
Дана прямогульная матрица b. Определить индекс стобца. среднее арифметическое жлементов которого максимально. Если таких столбцов...

Среди отрицательных элементов массива, найти такое, значение которого максимально
Среди отрицательных элементов массива, найти такое, значение которого максимально массив заполнить через рандом нужно

Найти среднее арифметическое элементов, имеющих четный номер и нечетное значение
дана последовательность натуральных чисел a1,a2,...,an найти среднее арифметическое элементов, имеющих четный номер и нечетное значение!!...

Найти номер строки, для которой среднеарифметическое значение элементов массива максимально
3. Имеется двумерный массив целых чисел. Найти номер строки, для которой среднеарифметическое значение её элементов максимально.

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru