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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2013, 23:34   #1
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию Делфи.Матрица.Седловой элемент.

Делфи. Помогите, пожалуйста, написать код(процедуру).

Элемент матрицы называется седловым,если его значение есть:
максимальным в строке и минимальным в столбце,на пересечении которых он находится.
Вычислить номера строки и столбца одного из седловых элементов
(если таких нет,то создается пара номеров за границами индексного множества матрицы.)


Код:
const Nmax=10; 
type Matrix=array[1..Nmax,1..Nmax] of integer;
Если можно,то пожалуйста без строк.Спасибо,буду очень благодарна.

Последний раз редактировалось Jane_Air; 03.11.2013 в 23:36.
Jane_Air вне форума Ответить с цитированием
Старый 03.11.2013, 23:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Функция проверки думаю такая будет:
Код:
function IsSedlo(x,y:integer):Boolean;
var mn,i:integer;
begin
 result:=true;
 mn:=m[x,y]; 
  for i:=1 to NMax do if (mn<m[x,i])or(mn>m[i,y]) then begin result:=false;exit; end;
end;
Ну и в цикле:
Код:
for i:=1 to NMax do
 for j:=1 to NMax do
   if IsSedlo(i,j) then writeln(i:10,j:10);
Не самое оптимальное, но мне сейчас думать лень.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2013, 22:33   #3
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

не работает(
Jane_Air вне форума Ответить с цитированием
Старый 04.11.2013, 22:34   #4
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

написала код,только не находит элемент..
может увидите ошибку..
Код:
procedure sidlo(var m:matrix;rd,st:integer);
var i,j,ii,jj,max,min:integer;k:boolean;
begin
  i:=1;j:=1;k:=false;
  for i:=1 to rd do
      begin

             max:=m[i,j];           {знаходження макс елемента в рядку }                                    {елемента в рядку}
            for j:=1 to st do
                    begin
                      jj:=j;
                      if m[i,j]>max
                      then begin
                              max:=m[i,j];
                              jj:=j;
                           end;
                    end;


             min:=m[i,jj];           {знаходження мін елемента в стовпчику}
            for ii:=1 to rd do
                    begin
                      if m[ii,jj]<min
                      then min:=m[ii,jj];
                    end;



             if round(max)=round(min) then begin
                                writeln('ryadok: ',i,' stovp4uk: ',j);
                                k:=true;
                             end;
          end;
   if k=false then writeln(st+1,' 1');
end;
Jane_Air вне форума Ответить с цитированием
Старый 04.11.2013, 22:56   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
             min:=m[i,jj];           {знаходження мін елемента в стовпчику}
            for ii:=1 to rd do
                    begin
                      i:=ii;
                      if m[ii,jj]<min
                      then begin min:=m[ii,jj]; i:=ii; end;
                    end;
И
Код:
writeln('ryadok: ',i,' stovp4uk: ',jj);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2013, 00:21   #6
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

если так,то выдает ошибку(( сдесь:
Код:
then begin min:=m[ii,jj]; i:=ii; end;
Jane_Air вне форума Ответить с цитированием
Старый 05.11.2013, 11:24   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
сдесь
Пока не научишься тексты ошибок читать внимательно о программировании забудь. Лучше купи преподавателя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2013, 11:37   #8
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

Извините,я всего лишь учусь и мой возраст намного меньше Вашего,поэтому я не такая умная.А насчет ошибки,я русский никогда не учила,просто,боюсь, здесь мой украинский не поймут
Jane_Air вне форума Ответить с цитированием
Старый 05.11.2013, 14:47   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Причем здесь возраст? Ты ошибку получаешь. Она что белыми буквами по воздуху написана? У нее есть текст? Пусть хоть на гондурасийском - читай его, вникай в то что тебе компилятор пишет и ищи решение.
Пока не научшся работать с ошибками можешь даже не пытаться что-то написать самостоятельно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2013, 15:42   #10
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

Да,но чтобы научится работать с ошибками,нужно писать что-то самостоятельно,что бы ошибки были
Jane_Air вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрица, нахождения седловой точки андрей.... Помощь студентам 0 21.12.2012 17:04
Матрица. Максимальный элемент АлександрМих Общие вопросы C/C++ 3 21.04.2012 19:56
Матрица в С++. максимальный элемент каждого столбца. Маргоша Помощь студентам 1 23.10.2010 19:50
Матрица. Посчитать количество строк, содержащих хотя бы один нулевой элемент Геля007 Общие вопросы C/C++ 0 02.06.2010 16:17
Седловой элемент матрицы Delphi Toni Milano Помощь студентам 4 13.11.2009 10:42