Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125

Соседи элемента двумерного массива

15.10.2014, 19:59. Показов 2741. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
"Соседями" элемента двумерного массива с индексами i,j некой матрицы называются такие элементы, соответствующие индексы которых отличаются от i и j не более чем на единицу. Нужно для указанной целочисленной матрицы "A" (то есть её нужно ввести сначала) найти другую "B", элементы которой состоят из 1 и 0, когда все соседи A[i,j] и сам A[i,j] равен 0.

Я думаю, что здесь нужно нужно сначала определять для каждого элемента все-ли его соседи равны ему, и если "да" то заменять этот элемент на 1 в новой матрице. Но, для крайних элементов условия сравнения другие, так как они стоят с краю, а это значит, что у них не все соседи есть вообще.

К примеру:
Было так:
|1 1 1 3|
|1 1 1 4|
|1 1 1 5|

Должно стать так:
|0 0 0 0|
|0 1 0 0|
|0 0 0 0|
|0 0 0 0|

Пытался это осуществить уже, но никак не мог правильно указать условия сравнения.
Нашёл индексы "соседей":
A[i+1,j+1]
A[i,j+1]
A[i+1,j]
A[i-1,j+1]
A[i-1,j+1]
A[i,j-1];
A[i-1,j]
A[i+1,j-1]

Как это осуществить без использования boolean ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2014, 19:59
Ответы с готовыми решениями:

Заменить значение любого элемента двумерного массива на число А
Люди добрые помогите пожалстя) Составить программу, заменяющую значение любого элемента двумерного массива на число А

Поменять местами два любых элемента двумерного массива
Составить программу, которая меняет местами два любых элемента двумерного массива.

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

12
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.10.2014, 21:06
Цитата Сообщение от Magestian Посмотреть сообщение
элементы которой состоят из 1 и 0, когда все соседи A[i,j] и сам A[i,j] равен 0.
Это как понимать? Когда 0, когда 1?

Добавлено через 8 минут
Цитата Сообщение от Magestian Посмотреть сообщение
Но, для крайних элементов условия сравнения другие,
Нужно отдельно рассмотреть 4 угловых, затем 4 по периметру без угловых, затем остальные, всего 9 условий.
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
15.10.2014, 21:36  [ТС]
Если в первой матрице A[i,j] и его соседи равны 0. А во второй матрице, заменить элемент A[i,j] на 0, остальные на 0.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.10.2014, 21:39
Сам понял что написал? Неужели нет подлинника задания?
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
15.10.2014, 21:57  [ТС]
Да, понял. Подлинник в описании.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.10.2014, 07:57
Может так?
когда все соседи A[i,j] и сам A[i,j] равны то b[i,j]=1 если нет то =0
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
16.10.2014, 22:12  [ТС]
Именно так. Вот эти сравнения не выходит.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.10.2014, 22:17
Цитата Сообщение от Magestian Посмотреть сообщение
Вот эти сравнения не выходит.
Так я же написал что нужно рассмотреть 9 случаев, в которых сравнить 3(угловые) или 5(на периметре не угловые) или 8(остальные) соседних элементов с элементом a[i,j]
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
16.10.2014, 22:19  [ТС]
Вот именно это описать корректно у меня не выходит. Помогите, хотя бы с этим куском кода.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.10.2014, 22:40
Если где-то вместо знака = будет знак >, поправь, выдрал из другой программы.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{óãëû}
if((i=1)and(j=1)and((a[i,j])=a[i+1,j+1])and(a[i,j]=a[i,j+1])and(a[i,j]=a[i+1,j]))
or((i=1)and(j=m)and((a[i,j])=a[i+1,j-1])and(a[i,j]=a[i,j-1])and(a[i,j]=a[i+1,j]))
or((i=m)and(j=1)and((a[i,j])=a[i-1,j+1])and(a[i,j]=a[i-1,j])and(a[i,j]=a[i,j+1]))
or((i=m)and(j=m)and((a[i,j])=a[i-1,j-1])and(a[i,j]=a[i,j-1])and(a[i,j]=a[i-1,j]))
{ïåðèìåòð}
or((i=1)and(j in [2..m-1])and((a[i,j])=a[i+1,j-1])and(a[i,j]=a[i+1,j+1])
and(a[i,j]=a[i+1,j])and(a[i,j]=a[i,j+1])and(a[i,j]=a[i,j-1]))
or((i=m)and(j in [2..m-1])and((a[i,j])=a[i-1,j-1])and(a[i,j]=a[i-1,j+1])
and(a[i,j]=a[i-1,j])and(a[i,j]=a[i,j+1])and(a[i,j]=a[i,j-1]))
or((j=1)and(i in [2..m-1])and((a[i,j])=a[i-1,j])and(a[i,j]=a[i-1,j+1])
and(a[i,j]=a[i,j+1])and(a[i,j]=a[i+1,j])and(a[i,j]=a[i+1,j+1]))
or((j=m)and(i in [2..m-1])and((a[i,j])=a[i-1,j-1])and(a[i,j]=a[i-1,j])
and(a[i,j]=a[i,j-1])and(a[i,j]=a[i+1,j-1])and(a[i,j]=a[i-1,j]))
{îñòàëüíîå}
or((i<>1)and(i<>m)and(j<>1)and(j<>m)
and(a[i,j]=a[i+1,j+1])and(a[i,j]=a[i-1,j-1])and(a[i,j]=a[i-1,j+1])and(a[i,j]=a[i+1,j-1])
and(a[i,j]=a[i-1,j])and(a[i,j]=a[i+1,j])and(a[i,j]=a[i,j+1])and(a[i,j]=a[i,j-1]))
then b[i,j]:=1 else b[i,j]:=0;
1
охотник
 Аватар для vint-81
1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083
16.10.2014, 23:09
Цитата Сообщение от Magestian Посмотреть сообщение
К примеру:
Было так:
|1 1 1 3|
|1 1 1 4|
|1 1 1 5|
Должно стать так:
|0 0 0 0|
|0 1 0 0|
|0 0 0 0|
|0 0 0 0|
Pascal
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
const n=5;a1:array[1..n,1..n] of integer =((1,1,1,2,3),
                                          (1,1,1,2,1),
                                          (1,1,1,1,3),
                                          (1,1,1,1,3),
                                          (1,1,1,1,3));
type mas=array[1..n,1..n] of integer;
var a,b:mas;
    i,j: integer;
procedure v(m:mas);
begin
  for i:=1 to n do
   begin
    for j:=1 to n do
     write(m[i,j]:3);
    writeln
   end;
  writeln
end;
begin
  randomize;
  for i:=1 to n do
   for j:=1 to n do
    begin
     b[i,j]:=0;
     a[i,j]:=a1[i,j]
    end;
  v(a);
  for i:=2 to n do
   for j:=2 to n do
    if (a[i,j]=a[i,j+1])and(a[i,j]=a[i+1,j+1])and(a[i,j]=a[i+1,j])and
       (a[i,j]=a[i+1,j-1])and(a[i,j]=a[i,j-1])and
       (a[i,j]=a[i-1,j-1])and(a[i,j]=a[i-1,j])and(a[i,j]=a[i-1,j+1])
     then b[i,j]:=1;
  v(b);
  readln
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
16.10.2014, 23:32
vint-81,
судя по примеру, 1 только если все 8 соседей равны, для крайних элементов -- нули.
Поэтому циклы по i и j от 2 до n-1.
И вместо длинного условия можно добавить пару вложенных циклов:
Pascal
1
2
3
4
5
for i:=2 to n-1 do for j:=2 to n-1 do begin
  b[i,j]:=1;
  for ii:=i-1 to i+1 do for jj:=j-1 to j+1 do
    if a[i,j]<>a[ii,jj] then b[i,j]:=0;
end;
1
охотник
 Аватар для vint-81
1011 / 535 / 650
Регистрация: 29.09.2014
Сообщений: 1,083
16.10.2014, 23:55
Цитата Сообщение от bormant Посмотреть сообщение
Поэтому циклы по i и j от 2 до n-1
просто забыл
Цитата Сообщение от bormant Посмотреть сообщение
И вместо длинного условия можно добавить пару вложенных циклов:
Pascal
1
2
3
4
5
for i:=2 to n-1 do for j:=2 to n-1 do begin
 b[i,j]:=1;
 for ii:=i-1 to i+1 do for jj:=j-1 to j+1 do
 if a[i,j]<>a[ii,jj] then b[i,j]:=0;
end;
красиво
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2014, 23:55
Помогаю со студенческими работами здесь

Найти номер строки и столбца максимального элемента двумерного массива целых чисел
Доброго времени суток) Помогите пожалуйста решить несколько задач на массивы. Я в этом полный ноль... :-[ 1. В массиве FAM$ (N) список...

Разработать программу сортировки строк двумерного массива по возрастанию первого элемента методом выбора
Помогите пожалуйста выполнить это задание, никак не получается)))

Определить кол-во столбцов массива, где нижних и минимальных элементов меньше, чем его соседи по строке.
Дан массив a(n*n)(6&lt;n&lt;20). Определить кол-во столбцов массива, где нижних и минимальных элементов меньше, чем его соседи по строке. Первый...

Подсчет строк двумерного массива A(N,M), в которых имеется два нулевых элемента
Составьте программу подсчета строк двумерного массива A(N,M), в которых имеется два нулевых элемента.

Соседи элемента матрицы
есть такая задача: Будем называть соседями элемента с индексами ij некоторой матрицы такие элементы этой матрицы, соответсвующие индексы...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
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