|
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 31
|
||||||||||||
Найти среднее арифметическое всех элементов матрицы14.10.2019, 23:34. Показов 12955. Ответов 14
Доброго времени суток. Мне нужно написать код, "который находит среднее арифметическое всех элементов матрицы
![]()
0
|
||||||||||||
| 14.10.2019, 23:34 | |
|
Ответы с готовыми решениями:
14
Найти среднее арифметическое всех положительных элементов матрицы Найти количество элементов динамической матрицы, не превышающих среднее арифметическое всех ее элементов
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
| 15.10.2019, 00:02 | |
|
Antisovenok, то, что сделали Вы - это не двумерный массив.
0
|
|
|
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 31
|
|
| 15.10.2019, 00:04 [ТС] | |
|
Azazel-San, неожиданно. Ну не двумерный массив, так матрица?..
Не суть. Подскажите лучше, как это переделать через указатели. Буду благодарен.
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
| 15.10.2019, 00:06 | |
|
Antisovenok, смотря что вы вкладываете в понятие матрицы )
Так что у вас не получается?
0
|
|
|
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 31
|
|
| 15.10.2019, 00:17 [ТС] | |
|
Azazel-San, у меня не получается переделать код, что я написал -в код, где используется указатель при действиях с элементами массива.
0
|
|
|
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
||||||
| 15.10.2019, 00:41 | ||||||
|
Antisovenok, главная диагональ есть не только у квадратной матрицы
0
|
||||||
|
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 31
|
|||
| 15.10.2019, 00:48 [ТС] | |||
|
Yetty, а, забыл указать, что у меня по условию квадратная матрица.
Добавлено через 1 минуту Добавлено через 1 минуту
0
|
|||
|
Мозгоправ
|
|||||||||||||||||
| 15.10.2019, 00:50 | |||||||||||||||||
|
Antisovenok, во-первых, ваша программа с ошибкой. В строках 32-34 вы сбиваете переменную цикла j из цикла в строке 29.
Фрагмент (строки 28-37) может выглядеть так:
Но на самом деле, всё ещё проще:
Во-вторых, вас не учили освобождать память, занятую динамическими массивами? В конце программы надо написать:
Давайте вы как-то поднапряжётесь и сделаете это сами? В качестве "информации к размышлению" можете принять следующее: 1. В вашем случае, a, типа double** - это указатель на массив указателей на массив double. Т.е. по адресу, хранящемуся в a располагается массив адресов, по которым располагаются массивы строк матрицы. Т.е. a - это массив массивов. (Для иллюстрации посмотрите строки 11-13 вашего кода. А ещё лучше посмотрите под отладчиком как работает этот кусок и где и как будет изменяться содержимое памяти в строках 11-20.)2. Если double** pa = a, то *p - это адрес начала первой (нулевой) строки матрицы. Соответственно, после p++, *p будет содержать начала второй строки матрицы. И т.д. Т.е. операторы -- и ++ будут перемещать указатель pa по строкам матрицы вверх или вниз.3. Если double* pra = *pa, то pra - это адрес начала строки матрицы, а *pra - это первый (нулевой) элемент строки матрицы. Соответственно, операторы -- и ++ будут перемещать указатель pra по строке влево или вправо.4. Ну и наконец классика адресной арифметики: выражение *(*(a + i) + j) эквивалентно выражению a[i][j]. Советую разобраться почему.
0
|
|||||||||||||||||
|
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
|
||
| 15.10.2019, 00:51 | ||
|
Antisovenok, сразу условие сообщить не получилось ? если квадратная, замените все m на n, ввод только
n оставьте setw - выравнивает матрицу при выводе на экран
0
|
||
|
Мозгоправ
|
||||||
| 15.10.2019, 01:11 | ||||||
|
Yetty, кто-то недавно меня укорял в нелояльности к новичкам?
![]() Antisovenok, setw() - это манипулятор из <iomanip>. Устанавливает ширину поля для вывода следующего значения. Следующие фрагменты эквивалентны:
1
|
||||||
|
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 31
|
||||
| 15.10.2019, 01:19 [ТС] | ||||
|
За одномерный массив Вам спасибо, в прошлом моём вопросе Вы мне помогли, но двумерный массив - это более сложная структура и пока что все мои попытки тщетны, потому что я просто не понимаю - что, как и зачем. Именно поэтому я нахожусь на данном форуме. Чтобы от более опытных людей узнать свои ошибки и просто понять что-то новое. В остальном, спасибо Вам за более подробные подпункты, я постараюсь разобраться... А теперь непосредственно к коду
0
|
||||
|
Мозгоправ
|
|
| 15.10.2019, 01:21 | |
|
Кстати, Antisovenok, что бы окончательно порушить ваш мозг, посмотрите Как использовать указатели в двухмерном массиве. Это другой подход к созданию матрицы. Там на С, но для С++ такой подход вполне приемлем. (Если malloc() и free() мозолят глаза, можно переделать на new/delete[] - суть не поменяется. А можно "по-взрослому" завернуть это в класс.)
0
|
|
|
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 31
|
|
| 15.10.2019, 01:26 [ТС] | |
|
Yetty, понял, спасибо большое, буду дальше учить матчасть. Сложно, блин.
Добавлено через 1 минуту L0M, боже мой, это что за вундервафля? Я поступил на радиотехнический факультут и профиль у меня - физика. Что происходит и что я тут делаю, а?..
0
|
|
|
Мозгоправ
|
||||||||
| 15.10.2019, 02:02 | ||||||||
Сообщение было отмечено Antisovenok как решение
Решениеvarname^. А в более продвинутых диалектах (Object Pascal, Delphi) - там точно есть.В "современном" С++ взят курс на отказ от адресной арифметики. Типа небезопасно. "Использовать только в крайних случаях". Но на самом деле, указатели (суть, адрес в памяти, где лежат данные) и адресная арифметика - одно из базовых понятий программирования. Даже если язык скрывает эти вещи, то в нетривиальных ситуациях будет ещё хуже: придётся лезть в места для того не предназначенные, что бы выяснить почему эта херь неправильно работает. А там дизассемблированный код и, да, адреса в памяти, где лежат данные. Так что лучше с указателями разобраться. *(*(a + i) + j) и a[i][j].Во внешнем цикле я прохожу сразу по элементам главной диагонали. И только по ним. Это гарантирует равенство индексов: a[i][i]. Вложенный цикл (который накапливает сумму элементов в строках матрицы) запускается, если найден отрицательный элемент в главной диагонали.Добавлено через 12 минут
0
|
||||||||
|
1 / 1 / 0
Регистрация: 14.10.2019
Сообщений: 31
|
|
| 15.10.2019, 02:17 [ТС] | |
|
L0M, ахахаххаха, "у каждого свои недостатки", верно подмечено)
Ладно, спасибо Вам большое за наиболее полный ответ и потраченное на меня время. Книги взял на заметку, продолжу грызть гранит науки, так сказать, ведь хоть и сложно, но на самом деле очень интересно. Добра Вам)
0
|
|
| 15.10.2019, 02:17 | |
|
Помогаю со студенческими работами здесь
15
Массив: Найти среднее арифметическое из всех положительных элементов этой матрицы Массив: Найти среднее арифметическое из всех положительных элементов заданной матрицы. Найти индекс первого элемента, превосходяшего среднее арифметическое всех элементов матрицы Найти сумму всех положительных элементов массива и среднее арифметическое всех элементов Определить среднее арифметическое всех отрицательных элементов матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера 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. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|