ВУЗ:
Составители:
Рубрика:
17
матрицы такие элементы , соответствующие индексы которых отличаются от i,j
не более чем на единицу. Для данной целочисленной матрицы A(a
ij
) размером
mxm найдите матрицу B, состоящую из нулей и единиц , элемент которой b
ij
ра-
вен единице, когда все соседи a
ij
меньше самого элемента a
ij
.
♣ Организуем два вложенных цикла с параметрами i и j, с помощью ко-
торых “проанализируем” всех соседей a
ij
. Логическая переменная f будет иметь
значение true, если все соседи a
ij
меньше самого элемента a
ij
. Если хотя бы один
сосед a
ij
больше либо равен элементу a
ij
, то переменной f будет присвоено зна-
чение false.
Вначале для каждого a
ij
переменной f присваивается значение true. “Ана-
лизировать” соседей a
ij
будем с помощью двух вложенных циклов, парметры
которых изменяются от -1 до 1 . Параметр внешнего цикла n варьирует номер
строки, а параметр внутреннего цикла k - номер столбца.
Логическая переменная g отвечает за наличие соседа, то есть за существо-
вание элемента матрицы a
i+n j+k
. Если сосед a
i+n j+k
существует (и не совпадает с
самим элементом, то есть n<>0 или k<>0), то переменной f будет присвоено
значение false, если a
i+n j+k
> = a
ij
.
После “анализа” всех соседей элемета a
ij
элементу b
ij
присваивается еди -
ница, если значение переменной f равно true, в противном случае b
ij
присваива-
ется ноль. ♣
Program Sosedi;
Uses Crt;
Const m=3;
Var i,j,k,n:integer; f,g:boolean;
a,b:array[1..m,1..m] of integer;
Begin
Textbackground(7); Textcolor(blue); Clrscr;
writeln ('Введите элементы целочисленной матрицы размера ',m,'x',m);
for i:=1 to m do
for j:=1 to m do read(a[i,j]);
{-----------------------------------------------------}
writeln('Найденная матрица В:');
for i:=1 to m do
begin
for j:=1 to m do
begin
f:=true;
for n:=-1 to 1 do
for k:=-1 to 1 do
begin
g:=((i+n)>0) and ((j+k)>0) and ((i+n)<=m) and ((j+k)<=m);
if g and ((k<>0) or (n<>0))
then
if a[i+n,j+k]>=a[i,j]
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »