Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Работа: предложения и спрос
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.12.2009, 06:20
yak yak вне форума
Прохожий
 
Регистрация: 28.12.2009
Сообщения: 1
Репутация: 10
По умолчанию Седловые точки

условие:
матрица А имеет седловую точку Aij,если Aij является минимальным элементом в i-й строке и максимальным в j-столбце.Дана целочисленная прямаугол. матрица.Определить:Номера строк и столбцов всех седловых точек...


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

Исправьте в коде только после ,function Sed(A:matr;x,y:byte):string;.. вознагрожу за помощь достойно..пожалуйсто помогите ..
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  type matr=array[0..100,0..100]of integer;
  var A:matr;
  x,y:byte;
implementation
{$R *.dfm}
function Vvod(var A:matr;var x,y:byte):integer ;
var i,j:byte;
begin
randomize;
       for i:=0  to y-1 do
       for j:=0 to x-1 do
         A[i,j]:=random(8);
   end;
function Vivod(mt:matr;x,y:byte;StringGrid1:TstringGrid):integer;
var i,j:integer;
begin
   for i:= 0 to y-1 do
     for j:=0 to x-1 do
        StringGrid1.Cells[j,i]:=FloatToStr(A[i,j]);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo2.Clear;
StringGrid1.ColCount:=StrToInt(Edit1.Text);
   StringGrid1.RowCount:=StrToInt(Edit2.Text);
    x:= strtoint(edit1.text);
     y:= strtoint(edit2.text);
    Vvod(A,x,y);
    Vivod(A,x,y,StringGrid1);
  end;
{задача}
function Sed(A:matr;x,y:byte):string;
var
 i,j,k,tempi,tempj,max,min,countsed:integer;
  fl:boolean;
begin
countsed:=0;
for i:=1 to x do
  begin
    min:=a[i,1];
    tempi:=1;
    tempj:=1;
    for j:=2 to y do
      if a[i,j]<min then
      begin
        min:=a[i,j];
        tempi:=i;
        tempj:=j;
      end;
      k:=1;
    fl:=true;
    repeat
      if a[k,tempj]>min then
        fl:=false;
      inc(k)
    until
      (k>x) or (fl=false);
      if fl then
    begin
    result:='Элемент А['+inttostr(A[tempi,tempj])+']является седловой точкой';
     inc(countsed)
    end;
  end;
  if countsed=0 then
  begin
  result:='В заданной матрице седловых точек нет...';
end;
  end;


procedure TForm1.Button2Click(Sender: TObject);
begin
memo2.Lines.Add((Sed(A,x,y)));
end;
end.
Изображения
Тип файла: jpg 2323.jpg (51.2 Кбайт, 7 просмотров)
Ответить с цитированием
  #2  
Старый 28.12.2009, 10:53
Petrovi4 Petrovi4 вне форума
Прохожий
 
Регистрация: 25.12.2009
Сообщения: 6
Репутация: 10
По умолчанию

ICQ - 324-783-266
Пиши, сейчас сделаем
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter