Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2014, 14:23   #1
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию седловые точки

Здравствуйте, помогите пожалуйста исправить ошибки.Задача:элемент матрицы называется седловой точкой,если он является наименьшим в строке и наибольшим в столбце или, наоборот, наибольшим в строке и наименьшим в столбце.Для данной вещественной матрицы А размером mxn указать индексы всех седловых точек.
Проблема, когда вводишь такой пример матрицы:
1 2 3
4 5 6
7 8 9
то здесь седловые точки это 3 и 7 выводит правильно,но если ввести матрицу:
1 1 1
1 1 1
1 1 1
то вывод не правильный, должны быть все элементы.
Код:
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.
fkty вне форума Ответить с цитированием
Старый 05.05.2014, 20:07   #2
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

Никто не знает?
fkty вне форума Ответить с цитированием
Старый 05.05.2014, 21:52   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Было лень разбираться в Вашем алгоритме
Код:
uses crt;
const
  n = 3;
  m = 3;

var
  mas: array [1 .. n, 1 .. m] of real;
  maxl, minl: array [1 .. m] of real;
  maxr, minr: array [1 .. n] of real;
  i, j, count: integer;

begin
  clrscr;
  writeln('Введите матрицу:');
  for i := 1 to n do
    for j := 1 to m do
      read(mas[i, j]);
  for i := 1 to n do
  begin
    maxr[i] := mas[i, 1];
    minr[i] := mas[i, 1];
  end;
  for j := 1 to m do
  begin
    maxl[j] := mas[1, j];
    minl[j] := mas[1, j];
  end;
  for i := 1 to n do
    for j := 1 to m do
    begin
      if mas[i, j] > maxr[i] then
        maxr[i] := mas[i, j]
      else if mas[i, j] < minr[i] then
        minr[i] := mas[i, j];
      if mas[i, j] > maxl[j] then
        maxl[j] := mas[i, j]
      else if mas[i, j] < minl[j] then
        minl[j] := mas[i, j];
    end;
  count := 0;
  for i := 1 to n do
    for j := 1 to m do
      if (maxr[i] = minl[j]) or (minr[i] = maxl[j]) then
      begin
        writeln(i, ' ', j);
        inc(count);
      end;
  if count = 0 then
    writeln('Таких ячеек в матрице нет');
  readln;
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.05.2014, 16:04   #4
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

BDA,спасибо
fkty вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Седловые точки C++ Саша Петров Общие вопросы C/C++ 0 11.04.2013 19:11
Матрица и седловые точки (С++) paha192 Помощь студентам 2 09.10.2009 13:53
Седловые точки Skrip Общие вопросы C/C++ 2 09.06.2009 21:29
Как в Word найти седловые точки матриц — теория игр Sasha_Smirnov Microsoft Office Word 2 21.05.2009 20:19
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57