Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
#1

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

24.10.2009, 19:10. Просмотров 1037. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2009, 19:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти порядковый номер массива, среднее арифметическое значение элементов которого максимально (C++):

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

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

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

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

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

Найти среднее арифметическое значение элементов массива
#include &lt;iostream&gt; using namespace std; int shet(int *m, int n) { int...

18
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 19:15 #2
vonorf, Я так понимаю, нужно на С++ ?
0
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 19:19  [ТС] #3
Да, C++ на Visual Studio 2008 все пишу
0
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:06 #4
Цитата Сообщение от 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
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:08  [ТС] #5
спасибо, но компилятор 84 ошибки выдал)
0
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:09 #6
Цитата Сообщение от vonorf Посмотреть сообщение
спасибо, но компилятор 84 ошибки выдал)

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

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

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

п.с.
спасибо бы сказал чтоли...
1
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:23  [ТС] #13
просто вот видешь как я сначало написал в первом сообщении? Вот такое и показывали))) спасибо ща расставлю на все ответы.
0
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:27 #14
Цитата Сообщение от vonorf Посмотреть сообщение
просто вот видешь как я сначало написал в первом сообщении?
С утра напишу в таком стиле(надеюсь меня не застыдят)
1
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:32  [ТС] #15
Препод офигеет от написанного Когда я его спросил как сделать так, чтобы написав слово exit программа завершилась, он ответил на это, что такое невозможно. Думаю в такой ситуации не застыдят. Давно понял что ТАМ меня ничему не научат, потихоньку, насколько хватает времени читаю книги по C/C++, и топики на этом форуме. Надеюсь путь правильный. Огромное тебе еще раз спасибо за проявленную помощь, а если еще и хватит смелости написать в том стиле, что я предложил цены тебе не будет
0
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 20:34 #16
Цитата Сообщение от vonorf Посмотреть сообщение
Думаю в такой ситуации не застыдят
В смысле, обитатели форума
1
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
24.10.2009, 20:34  [ТС] #17
Я так и понял)
0
niXman
Эксперт С++
3202 / 1451 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
25.10.2009, 16:26 #18
Как и обещал.
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
vonorf
6 / 6 / 1
Регистрация: 05.10.2009
Сообщений: 31
25.10.2009, 16:48  [ТС] #19
Огромное спасибо
0
25.10.2009, 16:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2009, 16:48
Привет! Вот еще темы с решениями:

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

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

Найти среднее арифметическое значение положительных и отрицательных элементов массива
Задание 2 (его или третье) Дан Массив Xi, i = 1, ..., 15. Найти среднее...

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


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

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

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