Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/35: Рейтинг темы: голосов - 35, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87

Подсчитать среднее арифметическое элементов каждого столбца матрицы и ввести все это в одномерный массив

03.09.2014, 21:21. Показов 7479. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть уже отсортированный двумерный массив NxM.
Нужно подсчитать средн.арифмет. элементов каждого столбца и ввести все это в массив B.
Пример:
A =
1 2 3
4 5 6

B =
2.5 5 4.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
# include <algorithm>
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int i, j, N, M, a[20][20];
    cout << "Enter number of rows. N="; 
    cin >> N;
    cout << "Enter number of columns. M="; 
    cin >> M;
    cout << "Enter array elements: \n";
    
    for (i = 0; i < N; i++)
        
    for (j = 0; j < M; j++)
        cin >> a[i][j]; 
    
    cout << "-------------------------" << endl;
    cout << "Your array A: \n";
    cout << "-------------------------" << endl;
    for (i = 0; i < N; i++)
    {
    for (j = 0; j < M; j++)
            cout << a[i][j] << "\t"; 
        cout << endl; 
    }
    sort(a[0],a[0]+M);
        cout << "-------------------------" << endl;
    cout << "Your array A: \n";
    cout << "-------------------------" << endl;
    for (i = 0; i < N; i++)
    {
    for (j = 0; j < M; j++)
            cout << a[i][j] << "\t"; 
        cout << endl; 
    }
 
    cout << "-------------------------" << endl;
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2014, 21:21
Ответы с готовыми решениями:

Создать одномерный массив, содержащий среднее арифметическое элементов кратных 5 для каждого столбца
Задание: 1.Дан двумерный массив целых чисел. 2.Создать одномерный массив, содержащий среднее арифметическое элементов кратных 5 для...

Найти среднее арифметическое отрицательных элементов каждого столбца матрицы (результат записать в массив)
найти среднее арифметическое отрицательных элементов каждого столбца Х(3,4). Результат записать SA(4). на языке си. спасибо за ранее

Среднее арифметическое элементов каждого столбца матрицы
Что не так? в SA выводит все элементы = 0 Задание: Найти среднее арифметическое элементов каждого столбца матрицы (3,4). Результат...

39
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87
03.09.2014, 23:17  [ТС]
Студворк — интернет-сервис помощи студентам
nullpointer,
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# include <algorithm>
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int i, j, N, M, a[20][20];
    int b[50];
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            a[i][j] = 0;
        }
        b[j] = 0.0;
    }
 
    cout << "Enter number of rows. N=";
    cin >> N;
    cout << "Enter number of columns. M=";
    cin >> M;
    cout << "Enter array elements: \n";
 
    for (i = 0; i < N; i++)
 
    for (j = 0; j < M; j++)
        cin >> a[i][j];
 
    cout << "-------------------------" << endl;
    cout << "Your array A: \n";
    cout << "-------------------------" << endl;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
    sort(a[0], a[0] + M);
    cout << "-------------------------" << endl;
    cout << "Your sorted array A: \n";
    cout << "-------------------------" << endl;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
 
    cout << "-------------------------" << endl;
    
    
 
    for (j = 0; j < M; j++)
    {
        for (i = 0; i < N; i++)
        {
            b[j] += a[i][j];
        }
        b[j] /= N;
    }
 
    cout << "Your array B: \n";
    cout << "-------------------------" << endl;
    for (i = 0; i < M; i++)
    {
        cout << b[i] << "\t";
    }
 
 
 
    system("pause");
    return 0;
}
Я уже совсем теряюсь...вроде и делаю все так даже понимать начал, но что-то не то.
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
03.09.2014, 23:19
GetLucky, виноват, неправильно сказал, сплю уже.
Обнуление перед
C++
1
2
3
for (i = 0; i < N; i++)
    for (j = 0; j < M; j++)
        cin >> a[i][j];
И если уж вы подключили русский язык, то и пишите тогда на русском.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
03.09.2014, 23:19
GetLucky, зайдем с другого конца,напишите подробные комментарии к вашему последнему варианту.
0
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87
03.09.2014, 23:21  [ТС]
nullpointer, а чего последнее так посчитало?
Миниатюры
Подсчитать среднее арифметическое элементов каждого столбца матрицы и ввести все это в одномерный массив  
0
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87
03.09.2014, 23:22  [ТС]
Подключил, но потом понял, что раскладку менять не хочу. Сотру потом подключение. Да и это первые шаги в С++, пытаюсь пробовать все новое и смотреть что выходит.
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
03.09.2014, 23:27
GetLucky, последнее считает неправильно, потому что у вас последний элемент массива b не обнуляется, т.к. количество строк всего 2. Вынесите обнуление этого массива в отдельный цикл до M.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
03.09.2014, 23:30
nullpointer, зачем здесь обнулять?
GetLucky, давайте определимся,вы хотите получить готовое решение,или разобраться с кодом?

Добавлено через 1 минуту
А все,не читал 1 страницу
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
03.09.2014, 23:31
S_el, где здесь?
Обнулять надо для того чтобы вот тут
C++
1
b[j] += a[i][j];
считалось правильно.
1
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87
03.09.2014, 23:32  [ТС]
S_el,
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// Подключение библиотек: algorithm - для работы с алгоритмами, iostream - для работы с вводом/выводом данных
#include <algorithm>
#include <iostream>
// Возможность использовать std Обращение к объектам напрямую
using namespace std;
// Описание функции main()
int main()
{   
    // Подключение русского языка для консоли
    setlocale(LC_ALL, "RUS");
    // Объявление переменных
    int i, j, N, M, a[20][20];
    int b[50];
    
    // Ввод и считывание данных с клавиатуры
    cout << "Enter number of rows. N=";
    cin >> N;
    cout << "Enter number of columns. M=";
    cin >> M;
    cout << "Enter array elements: \n";
 
    // Цикл для обнуления массива
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            a[i][j] = 0;
        }
        b[i] = 0.0;
    }
    
    // Цикл для заполнения массива
    for (i = 0; i < N; i++)
 
    for (j = 0; j < M; j++)
        cin >> a[i][j];
    // Вывод массива
    cout << "-------------------------" << endl;
    cout << "Your array A: \n";
    cout << "-------------------------" << endl;
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
    // Сортировка первой строки пред.массива по возростанию 
    sort(a[0], a[0] + M);
    // Вывод отсортированного массива
    cout << "-------------------------" << endl;
    cout << "Your sorted array A: \n";
    cout << "-------------------------" << endl;
 
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
 
    cout << "-------------------------" << endl;
    
    
    // Подсчет среднего арифметического всех столбцов отсортированного массива 
    for (j = 0; j < M; j++)
    {
        for (i = 0; i < N; i++)
        {
            b[j] += a[i][j];
        }
        b[j] /= N;
    }
    // Вывод одномерного массива всех среднеарифметических.
    cout << "Your array B: \n";
    cout << "-------------------------" << endl;
    for (i = 0; i < M; i++)
    {
        cout << b[i] << "\t";
    }
 
 
    // "Пауза" консольного приложения, задержка экрана
    system("pause");
    // Возвращение значений
    return 0;
}
Вроде так, поправьте если что-то не правильно понял. Сейчас уже ночь, завтра еще посижу над ним, разберу на части.
0
03.09.2014, 23:33

Не по теме:

Цитата Сообщение от nullpointer Посмотреть сообщение
S_el, где здесь?
Обнулять надо для того чтобы вот тут
Тоже засыпаю,не сразу сообразил,что 2 страница пошла.

0
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87
03.09.2014, 23:34  [ТС]
nullpointer, можно подробнее про
Цитата Сообщение от nullpointer Посмотреть сообщение
GetLucky, последнее считает неправильно, потому что у вас последний элемент массива b не обнуляется, т.к. количество строк всего 2. Вынесите обнуление этого массива в отдельный цикл до M.
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
03.09.2014, 23:36
Лучший ответ Сообщение было отмечено GetLucky как решение

Решение

GetLucky, вот это
C++
1
2
3
4
5
6
7
8
for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            a[i][j] = 0;
        }
        b[i] = 0.0;
    }
замените на
C++
1
2
3
4
5
6
7
8
9
for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            a[i][j] = 0;
        }
}
for (i = 0; i < M; i++)
        b[i] = 0.0;
И все будет работать.

Добавлено через 1 минуту
GetLucky, внешний цикл идет до N = 2 - количества строк, а столбцов 3, т.е. средне арифметических тоже будет 3. Но в данном случае обнуляются только элементы b[0] и b[1], а b[2] - мусор.
1
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87
03.09.2014, 23:38  [ТС]
nullpointer, блин, а я протупил и взял место
C++
1
 b[i] = 0.0;
C++
1
 b[j] = 0.0;
. Снова путаю столбцы с строчками..
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
03.09.2014, 23:39
GetLucky, в вашем цикле правильно стояла i. Сравните ваши циклы и то что я написал постом выше. Возьмите на листочке по шагам распишите как будут обнуляться элементы в ваших циклах и в моих из поста выше, и тогда вы все поймете.
0
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87
03.09.2014, 23:41  [ТС]
nullpointer, тогда я перемудрил)
Большое спасибо Вам за помощь и потраченное на меня время/нервы.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
03.09.2014, 23:43
GetLucky,
83 строчка это вызов системной функции с аргументом(указанием) pause.
84 возвращение значения отработанной программы,в main можно опустить,по умолчанию = 0.
дополнительный цикл для подсчета среднего арифметического не нужен,расчеты можно и в предыдущих сделать.

48 строка,почему именно такие аргументы у функции sort?
6 строка,поправка к комментарию- это не описание,далее следует сама функция main()

Добавлено через 1 минуту
nullpointer, а зачем вы рекомендуете выносить в отдельный цикл?Это лишние операции и объемный код.
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
04.09.2014, 07:32
S_el, потому что сейчас что происходит я описал, в данном случае это коректно работате только если N=M, но когда N < M обнуляются не все элементы. Если внести обнуление массива b во внутренний цикл, то обнуление будет N раз и вот тут как раз и будут лишние операции.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.09.2014, 08:11
Цитата Сообщение от nullpointer Посмотреть сообщение
Если внести обнуление массива b во внутренний цикл, то обнуление будет N раз и вот тут как раз и будут лишние операции.
Можно и в условный оператор запихнуть.
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
04.09.2014, 17:48
S_el, я писал с точки зрения простоты для ТС, а так, да, можно много всего придумать
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.09.2014, 18:06
nullpointer, ага,надо переходить на vector или array и не заморачиваться с обнулением
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2014, 18:06

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

Найти среднее арифметическое элементов каждого столбца матрицы
1)Разработать алгоритм и программу решения задачи:&quot; Дана действительная матрица размера n*m.Найти среднее арифметическое элементов каждого...

Отпечатать среднее арифметическое элементов каждого столбца матрицы
Помогите решить. Для матрицы из 2 строк и 9 столбцов отпечатать среднее арифметическое элементов каждого столбца,в котором абсолютная...

Найти среднее арифметическое положительных элементов каждого столбца матрицы
Дана матрица А порядка n. Найти среднее арифметическое положительных элементов каждого столбца матрицы. Помогите пожалуйста!

Определить среднее арифметическое положительных элементов каждого столбца матрицы
дан двухмерный массив 5х6. Определить среднее арифметическое положительных элементов каждого столбца. #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе. Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I Обработка содержит следующие. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru