3 / 3 / 4
Регистрация: 21.11.2013
Сообщений: 29
1

Turbo Basic. Заменить все локальные минимумы данной матрицы на нули

23.12.2013, 15:04. Показов 905. Ответов 3
Метки нет (Все метки)

Дана матрица размера M × N. Элемент матрицы называется ее локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При решении допускается использовать вспомогательную матрицу.
Находил в инете решение на C++ и Pascal, с паскаля перевести могу впринцепи, но там решение огромное что-то. Может есть не такое большое решение?)
Кликните здесь для просмотра всего текста

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
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
87
88
89
90
91
92
93
94
95
{task matrix74}
const
  maxSize=10;
type 
  Tmatrix=array[1..maxSize,1..maxSize] of integer;
var
  a,b:Tmatrix;
  i,j,m,n:integer;
begin
  repeat
    write('Введите количество строк матрицы, не более ',maxSize,'=');
    readln(n);
  until (n>=1) and (n<=maxSize);
  repeat
    write('Введите количество столбцов матрицы, не более ',maxSize,'=');
    readln(m);
  until (m>=1) and (m<=maxSize);
  randomize;
  writeln('Исходная матрица');
  for i:=1 to n do
    begin
      for j:=1 to m do
        begin
          a[i,j]:=random(100)+1;
          write(a[i,j]:4);
        end;
      writeln;
    end;
  b:=a;
  writeln;
  for i:=1 to n do
    for j:=1 to m do
      if i=1 then
        begin
        if j=1 then
            begin
              if (b[i,j]<a[i,j+1]) and (b[i,j]<a[i+1,j]) and (b[i,j]<a[i+1,j+1]) then
                a[i,j]:=0;
            end
          else if j=n then
            begin
              if (b[i,j]<b[i,j-1]) and (b[i,j]<b[i+1,j-1]) and (b[i,j]<b[i+1,j]) then
                a[i,j]:=0;
            end
          else
            if (b[i,j]<b[i,j-1]) and (b[i,j]<b[i,j+1]) and (b[i,j]<b[i+1,j-1]) and (b[i,j]<b[i+1,j]) and
            (b[i,j]<b[i+1,j+1]) then
              a[i,j]:=0;
        end
      else if i=n then
        begin
          if j=1 then
            begin
              if (b[i,j]<b[i-1,j]) and (b[i,j]<b[i-1,j+1]) and (b[i,j]<b[i,j+1]) then
                a[i,j]:=0;
            end
          else if j=n then
            begin
              if (b[i,j]<b[i-1,j]) and (b[i,j]<b[i-1,j-1]) and (b[i,j]<b[i,j-1]) then
                a[i,j]:=0;
            end
          else
            if (b[i,j]<b[i,j-1]) and (b[i,j]<b[i,j+1]) and (b[i,j]<b[i-1,j-1]) and (b[i,j]<b[i-1,j]) and
            (b[i,j]<b[i-1,j+1]) then
              a[i,j]:=0;
        end
      else
        begin
          if j=1 then
            begin
              if (b[i,j]<b[i-1,j]) and (b[i,j]<b[i-1,j+1]) and (b[i,j]<b[i,j+1]) and (b[i,j]<b[i+1,j+1]) and
              (b[i,j]<b[i+1,j]) then
                a[i,j]:=0;
            end
          else if j=n then
            begin
              if (b[i,j]<b[i-1,j]) and (b[i,j]<b[i-1,j-1]) and (b[i,j]<b[i,j-1]) and (b[i,j]<b[i+1,j-1]) and
              (b[i,j]<b[i+1,j]) then
                a[i,j]:=0;
            end
          else
            if (b[i,j]<b[i-1,j-1]) and (b[i,j]<b[i-1,j]) and (b[i,j]<b[i-1,j+1]) and
            (b[i,j]<b[i,j-1]) and (b[i,j]<b[i,j+1]) and
            (b[i,j]<b[i+1,j-1]) and (b[i,j]<b[i+1,j]) and (b[i,j]<b[i+1,j+1]) then
              a[i,j]:=0;
        end;
  writeln('Полученная матрица');
  for i:=1 to n do
    begin
      for j:=1 to m do
        write(a[i,j]:4);
      writeln;
    end;
  readln;
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2013, 15:04
Ответы с готовыми решениями:

Найти все числа в матрице, каждое из которых встречается в каждой строке матрицы (Turbo Basic)
найдите все числа в матрице, каждое из которых встречается в каждой строке матрицы. нужна помощь

Заменить все локальные минимумы данной матрицы на нули
Matrix74. Дана матрица размера M × N. Элемент матрицы называется ее ло-кальным минимумом, если он...

Заменить все локальные минимумы данной матрицы M × N на нули.
Дана матрица размера M × N.Заменить все локальные минимумы данной матрицы на нули. При реше-нии...

Дана матрица размера M × N.Заменить все локальные минимумы данной матрицы на нули. При реше-нии допускается использовать вспомогательную матрицу.
Дана матрица размера M × N. Элемент матрицы называется ее ло-кальным минимумом, если он меньше всех...

3
1045 / 315 / 74
Регистрация: 13.07.2013
Сообщений: 1,270
23.12.2013, 16:40 2
Я предлагаю сделать так:
QBasic/QuickBASIC
1
2
3
4
5
6
7
DIM a(0:M+1, 0:N+1)  'вроде так заявляется
DIM b(0 TO M+1, 0 TO N+1)
FOR i=1 TO M
FOR j=1 TO N
IF a(i, j)>a(i, j+1) OR a(i, j)>a(i, j-1) OR a(i, j)>a(i-1, j) OR a(i, j)>a(i+1, j) OR a(i, j)>a(i+1, j+1) OR a(i, j)>a(i-1, j-1) OR a(i, j)>a(i+1, j-1) OR a(i, j)>a(i-1, j+1) THEN b(i, j)=a(i, j)
NEXT j
NEXT i
После этого, должно быть, в массиве b будет ответ.
0
3 / 3 / 4
Регистрация: 21.11.2013
Сообщений: 29
23.12.2013, 22:23  [ТС] 3
Good-Morning, что-то не выходит) ну я ввел размерность матрицы и присвоил рандомно значения. не хочет ничего выводить, ошибку пишет. Illegal function call
странно ты как-то массивы обьявляешь, я не очень понимаю как это)
я делал так:
Кликните здесь для просмотра всего текста

QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
RANDOMIZE TIMER
INPUT "vvedite razmernost matrici MxN: " , M , N
DIM a(M,N)
DIM b(M,N)
FOR i=1 TO M
FOR j=1 TO N
a(i,j)=INT(RND*10)
IF a(i, j)>a(i, j+1) OR a(i, j)>a(i, j-1) OR a(i, j)>a(i-1, j) OR a(i, j)>a(i+1, j) OR a(i, j)>a(i+1, j+1) OR a(i, j)>a(i-1, j-1) OR a(i, j)>a(i+1, j-1) OR a(i, j)>a(i-1, j+1) THEN b(i, j)=a(i, j)
NEXT j
NEXT i
0
1045 / 315 / 74
Регистрация: 13.07.2013
Сообщений: 1,270
23.12.2013, 22:40 4
Цитата Сообщение от Styort Посмотреть сообщение
странно ты как-то массивы обьявляешь
В Turbo Basic давно не работал. Там массивы иначе, нежели в QBasic, заявляются. Должно быть, подзабыл уже. Но что я знаю точно, что нужно сделать "рамочку" в массиве, чтобы везде можно было проверить индексы i-1, j+1 и т.д.
О! И вправду глупость написал:
Цитата Сообщение от Good-Morning Посмотреть сообщение
DIM b(0 TO M+1, 0 TO N+1)
Здесь, вроде, нужно также заявить, как и первый массив.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2013, 22:40
Помогаю со студенческими работами здесь

Заменить все локальные минимумы матрицы на нули
Дана матрица размера M × N. Элемент матрицы называется ее ло-кальным минимумом, если он меньше всех...

Заменить все локальные минимумы и максимумы данной матрицы на 0
Дана матрица размера M x N. Элемент называется локальным минимумом (максимумом), если он меньше...

Матрицы: все локальные минимумы заменить на 0, матрицу читать с файла
Дана матрица размера M x N. Элемент называется локальным минимумом (максимумом), если она меньше...

Двумерные массивы. Заменить все локальные минимумы матрицы нулем
Задана матрица размера n x m. Требуется заменить все локальные минимумы данной матрицы нулем....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru