Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266

Найти индексы всех седловых точек матрицы

05.05.2014, 20:07. Показов 806. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста исправить ошибки.Задача:элемент матрицы называется седловой точкой,если он является наименьшим в строке и наибольшим в столбце или, наоборот, наибольшим в строке и наименьшим в столбце.Для данной вещественной матрицы А размером mxn указать индексы всех седловых точек.
Проблема, когда вводишь такой пример матрицы:
1 2 3
4 5 6
7 8 9
то здесь седловые точки это 3 и 7 выводит правильно,но если ввести матрицу:
1 1 1
1 1 1
1 1 1
то вывод не правильный, должны быть все элементы.
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
uses crt;
const
    m=3;
    n=3;
var
   mas:array[1..m,1..n] of real;
   i,j,f,r1,r2,mmin,mmax,lmax,lmin,b:integer;
   min,max:real;
begin
clrscr;
r1:=0;
r2:=0;
b:=0;
writeln('введите матрицу:');
for j:=1 to n do
 for i:=1 to m do
  read(mas[i,j]);
for j:=1 to n do
 begin
  min:=mas[1,j];
  max:=mas[1,j];
  for i:=1 to m do
   begin
    if min>=mas[i,j] then
     begin
      min:=mas[i,j];
      lmin:=i;
     end;
    if max<=mas[i,j] then
     begin
      max:=mas[i,j];
      lmax:=i;
     end;
  end;
 for f:=1 to n do
  begin
   if mas[lmin,f]<=mas[lmin,j] then
    begin
     mmax:=j;
     r1:=r1+1;
    end;
   if mas[lmax,f]>=mas[lmax,j] then
    begin
     mmin:=j;
     r2:=r2+1;
    end;
  end;
writeln;
 if r1=n then
  begin
   writeln('a[',lmin,',',mmax,']');
   b:=1;
  end;
 if r2=n then
  begin
   writeln('a[',lmax,',',mmin,']');
   b:=1;
  end;
  r1:=0;
  r2:=0;
 end;
if b=0 then
writeln('таких ячеек в матрице нет');
readln;
readln;
end.
Добавлено через 5 часов 47 минут
Никто не знает?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2014, 20:07
Ответы с готовыми решениями:

Вернуть индексы всех седловых точек матрицы
Товарищи программисты помогите мне пожалуйста решить одну задачку. Завтра мне надо сдавать зачёт, а...

Для заданной целой матрицы размером (M*N) напечатать индексы всех ее седловых точек
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и...

Для заданной целой матрицы размером 10 х 15 напечатать индексы всех её "седловых точек".
Элемент матрицы назовём &quot;седловой точкой&quot;, если он является наибольшим в своём столбце и...

6
12 / 12 / 12
Регистрация: 13.11.2013
Сообщений: 24
05.05.2014, 20:30
Вот моя готовая программа, все работает правильно, только прикрепите свой текстовый файл

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
uses crt;
const nmax=100; mmax=100;
type ar=array[1..nmax,1..mmax] of integer;
type ar2=array[1..1000] of integer;
var a:ar;
       f:text; 
       i,j,n,m:integer;
       maxst,maxsr,minst,minsr:ar2;
procedure vvod(var f:text; var a:ar; var n,m:integer);
var i,j:integer;
begin
  for i:=1 to n do 
  begin
    for j:=1 to m do read(f,a[i,j]);
    readln(f); 
  end;
end;
begin
  textcolor(yellow);  textbackground(green); clrscr;
  assign(f,'easy.txt');
  reset(f);
  write('Введите размерность массива (n,m): ');
  readln(n,m);
  vvod(f,a,n,m);
  for i:=1 to m do 
      begin
        minsr[i]:=a[i,1]; 
        maxsr[i]:=a[i,1]; 
        for j:=2 to n do
               begin
                  if a[i,j]<minsr[i] then minsr[i]:=a[i,j];
                  if a[i,j]>maxsr[i] then maxsr[i]:=a[i,j];
                end;
        end;
   for j:=1 to m do 
      begin
       minst[j]:=a[1,j]; 
       maxst[j]:=a[1,j]; 
       for i:=1 to n do 
                          begin
                             if a[i,j]<minst[j] then minst[j]:=a[i,j];
                             if a[i,j]>maxst[j] then maxst[j]:=a[i,j];
                          end;
        end;
  for i:=1 to n do 
       begin 
         writeln; 
         for j:=1 to m do if ((a[i,j]=maxsr[i]) and (a[i,j]=minst[j])) or ((a[i,j]=maxst[j]) and (a[i,j]=minsr[i])) then 
                                                                                                                                                       begin 
                                                                                                                                                         textcolor(red); 
                                                                                                                                                         write(a[i,j],' '); 
                                                                                                                                                         textcolor(yellow); 
                                                                                                                                                       end 
                                                                                                                                                     else write(a[i,j],' '); 
        end;
  writeln;
  for i:=1 to n do for j:=1 to m do if ((a[i,j]=maxsr[i]) and (a[i,j]=minst[j])) or ((a[i,j]=maxst[j]) and (a[i,j]=minsr[i])) then writeln('Седловая точка с индексами: ',i,', ',j); 
  writeln
end.
Добавлено через 25 секунд
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
05.05.2014, 20:41  [ТС]
Кирилл Пушкарев, как и куда,что прикреплять? а можно без процедур как-то сделать?
0
12 / 12 / 12
Регистрация: 13.11.2013
Сообщений: 24
05.05.2014, 21:07
можно без процедур,
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
это вместо процедуры vvod
тогда и текстовый файл не нужен
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
05.05.2014, 21:30  [ТС]
Кирилл Пушкарев, так?
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
uses crt;
const nmax=100; mmax=100;
type ar=array[1..nmax,1..mmax] of integer;
type ar2=array[1..1000] of integer;
var a:ar;
f:text;
i,j,n,m:integer;
maxst,maxsr,minst,minsr:ar2;
 
begin
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
clrscr;
write('Введите размерность массива (n,m): ');
readln(n,m);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
for i:=1 to m do
begin
minsr[i]:=a[i,1];
maxsr[i]:=a[i,1];
for j:=2 to n do
begin
if a[i,j]<minsr[i] then minsr[i]:=a[i,j];
if a[i,j]>maxsr[i] then maxsr[i]:=a[i,j];
end;
end;
for j:=1 to m do
begin
minst[j]:=a[1,j];
maxst[j]:=a[1,j];
for i:=1 to n do
begin
if a[i,j]<minst[j] then minst[j]:=a[i,j];
if a[i,j]>maxst[j] then maxst[j]:=a[i,j];
end;
end;
for i:=1 to n do
begin
writeln;
for j:=1 to m do if ((a[i,j]=maxsr[i]) and (a[i,j]=minst[j])) or ((a[i,j]=maxst[j]) and (a[i,j]=minsr[i])) then
begin
write(a[i,j],' ');
end
else write(a[i,j],' ');
end;
writeln;
for i:=1 to n do for j:=1 to m do if ((a[i,j]=maxsr[i]) and (a[i,j]=minst[j])) or ((a[i,j]=maxst[j]) and (a[i,j]=minsr[i])) then writeln('седловая точка с индексами: ',i,', ',j);
writeln
end.
0
12 / 12 / 12
Регистрация: 13.11.2013
Сообщений: 24
05.05.2014, 21:37
да, только убери из описаний f:text
1
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 266
05.05.2014, 21:44  [ТС]
Спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.05.2014, 21:44
Помогаю со студенческими работами здесь

Для заданной целой матрицы размером n x m напечатать индексы всех её седловых точек
Здравствуйте, помогите пожалуйста с задачей, а то что то ничего не получается:gcray: Элемент...

Для матрицы n, m напечатать индексы всех ее седловых точек
Друзья, помогите пожалуйста решить следующие задачи (нужно до завтра решить:( ) : 1. Элемент...

Для заданной целой матрицы напечатать индексы всех ее седловых точек
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно...

Напечатать индексы всех седловых точек матрицы, используя динамические структуры
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно...

Для заданной матрицы А(н,м) напечатать индексы всех ее седловых точек.
Помогите пожалуйста! Дана седловая точка-элемент матрицы. Он наименьший в своей строке и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru