0 / 0 / 0
Регистрация: 21.12.2017
Сообщений: 8
|
||||||
1 | ||||||
Локальные максимумы в двумерном массиве21.12.2017, 04:52. Показов 3504. Ответов 4
Метки нет Все метки)
(
Здравствуйте, нуждаюсь в помощи
Необходимо найти в двумерном массиве(любого размера) все локальные максимумы(точки, все соседи которых имеют значения меньше), затем заменить локальные максимумы на звездочки, а остальные значения на точки. Как заменить я знаю, это можно не писать, вся проблема в алгоритме "вычисления" этих локальных максимумов. Учитывая что двумерный массив не статичный, а может быть любого размера, то тупо "подогнать" условия для каждой ячейки будет не очень правильно, поэтому я слегка запутался и прошу помощи в составлении алгоритма. Я перепробовал много всего и не буду скидывать свои неуспешные попытки сделать данное задание, а скинуть лишь код с базой, который я составил(создание двумерного массива на основе рандомных чисел и банальное вычисление максимального значение в массиве) Кликните здесь для просмотра всего текста
Спасибо, надеюсь на вашу помощь
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
21.12.2017, 04:52 | |
Ответы с готовыми решениями:
4
Найти все локальные минимумы и максимумы в заданном массиве
Как найти локальные максимумы? Заменить все локальные максимумы на 0 |
7423 / 5018 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
|
||||||
21.12.2017, 06:17 | 2 | |||||
так что не получается? примерно так должно определять
скобки лишние возле неравенств автоматом втулил
0
|
0 / 0 / 0
Регистрация: 21.12.2017
Сообщений: 8
|
|
21.12.2017, 08:02 [ТС] | 3 |
Если сделать так, то вылезает ошибка "Нарушение прав при чтении"
Я полагаю что значения убегают за пределы массива, поэтому, думаю сейчас как убрать
0
|
7423 / 5018 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
|
|
21.12.2017, 18:04 | 4 |
![]() Решение
кстати определись с понятием "соседи"
соседи - это соседи по строке и столбцу или по диагонали тоже? - потому что я приводил фрагмент кода только для соседей по строке и столбцу - если ещё и по диагонали - будет на четыре неравенства больше. Мой компилятор к этому относится нормально. Если твой даёт ошибку сделай несколько if чтобы определить элементы, которые находятся на первой и последней строке, левом или правом столбце - для них сделай условие с меньшим количеством неравенств (а для угловых с ещё меньшим). Добавлено через 53 минуты примерно так для угловых c учётом диагональных соседей if (c[0][0]>c[0][1] && c[0][0]>c[1][1] && c[0][0]>c[1][0]) cout ... if (c[0][b-1]>c[0][b-2] && c[0][b-1]>c[1][b-2] && c[0][b-1]>c[1][b-1]) cout ... if (c[a-1][b-1]>c[a-1][b-2] && c[a-1][b-1]>c[a-2][b-2] && c[a-1][b-1]]>c[a-2][b-1]) cout ... if (c[a-1][0]>c[a-2][0] && c[a-1][1]>c[a-2][1] && c[a-1][0]>c[a-1][1]) cout ... для внешних неугловых for (j=1; j<b-1; j++) if (c[0][j]> ... дальше сам for (i=1; i<a-1; i++) if (c[i][b-1]> ...дальше сам for (j=1; j<b-1; j++) if (c[a-1][j]> ...дальше сам for (i=1; i<a-1; i++) if (c[i][0]> ...дальше сам для внутренних уменьшить на единицу с каждой стороны циклы в for for (i = 1; i < a-1; i++) for (j = 1; j < b-1; j++)
1
|
0 / 0 / 0
Регистрация: 21.12.2017
Сообщений: 8
|
|
22.12.2017, 02:08 [ТС] | 5 |
Спасибо большое! Все гениальное просто
0
|
22.12.2017, 02:08 | |
Помогаю со студенческими работами здесь
5
Дан список, переместить локальные максимумы
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |