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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 18:22   #1
Egor92
 
Регистрация: 28.05.2011
Сообщений: 5
По умолчанию Двумерный массив!!!!

Вот задание:Задан числовой массив A[mxn].Некоторый элемент этого массива назовём Седловой точкой,если он является одновременно наименьшим в своей строке и наибольшим в своём столбце.Напечать номера стоки и столбца Седловой точки и напечатать число 0,если такой точки нет.

Вот мой алгоритм,но он не правильный,всегда почемуто выводит число 0!!!помогите пожалуста!

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;


type
base=array[1..100,1..100] of integer;
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label4: TLabel;
Label5: TLabel;
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
asort,a:base;
n,m,j,i, k:integer;
ArrNxM: array of array of Integer;
fl: Boolean;
Sed:integer;//Ñåäëîâàÿ òî÷êà

implementation

{$R *.dfm}


procedure TForm1.Edit1Change(Sender: TObject);//Ââîä êîëè÷åñòâà ñòðîê ìàññèâà
Var
i:integer;
begin
n:=strtoint(edit1.Text);
stringgrid1.RowCount:=n+1;
for i:=1 to n do
stringgrid1.Cells[0,i]:=inttostr(i);

end;

procedure TForm1.Edit2Change(Sender: TObject);//Ââîä êîëè÷åñòâà ñòîëáöîâ ìàññèâà è âûâîäà íîìåðà ñòîëáöà â Stringgrid1.Cells[i,0]
Var
j:integer;
begin
m:=strtoint(edit2.Text);
stringgrid1.ColCount:=m+1;
for j:=1 to m do
stringgrid1.Cells[j,0]:=inttostr(j);
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure wod(m,n:Integer;st:TStringGrid;a:ba se);
begin
for i:=1 to n do
for j:=1 to m do
a[i,j]:=strtoint(st.Cells[i,j]);
end;


procedure TForm1.Button3Click(Sender: TObject);
Var
mas:base;
begin
SetLength(ArrNxM, n, m);
randomize;
for i:=1 to n do
for j:=1 to m do
begin
stringgrid1.cells[i,j]:=floattostr(random(100));
mas[i,j]:=strtoint(stringgrid1.Cells[i,j]);
end;
end;

procedure sort(m,n:integer;ag:base;asort:base );
begin
for i := 0 to n - 1 do
for j := 0 to m - 1 do
begin
fl := True;
for k := j + 1 to m - 1 do
if not (ArrNxM[i, j] < ArrNxM[i, k]) then
begin
fl := False;
end;
if not fl then
else
for k := 0 to j - 1 do
if not (ArrNxM[i, j] < ArrNxM[i, k]) then
begin
fl := False;
end;
if not fl then
else
for k := i + 1 to n - 1 do
if not (ArrNxM[i, j] > ArrNxM[k, j]) then
begin
fl := False;
end;
if not fl then
else
for k := 0 to i - 1 do
if not (ArrNxM[i, j] > ArrNxM[k, j]) then
begin
fl := False;
end;
end;
end;

procedure vivod(n,m:Integer;ag:base;var label4:TLabel);
begin
for i:=1 to n do
for j:=1 to m do
Label4.Caption:=Label4.Caption+'Poi nt: '+IntToStr(a[i,j])+',Indexes: '+IntToStr(i)+','+IntToStr(j)+#13#1 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
n:=strtoint(edit1.Text);
m:=strtoint(edit2.Text);
if fl then
begin
wod(m,n,stringgrid1,a);
sort(m,n,a,asort);
vivod(n,m,a,label4);
end;
Label4.Caption:='0';
end;

end.
Egor92 вне форума Ответить с цитированием
Старый 29.05.2011, 12:50   #2
Egor92
 
Регистрация: 28.05.2011
Сообщений: 5
По умолчанию

Помагите кто чем может!!очень срочно нужно!!
Egor92 вне форума Ответить с цитированием
Старый 29.05.2011, 13:50   #3
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Посмотрите здесь
https://programmersforum.ru/showthread.php?t=146790
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 29.05.2011, 15:28   #4
Egor92
 
Регистрация: 28.05.2011
Сообщений: 5
По умолчанию

Так мне надо составить в Delphi с компанентами и с подпрограммами
Egor92 вне форума Ответить с цитированием
Старый 29.05.2011, 19:54   #5
Yougan
 
Регистрация: 30.03.2011
Сообщений: 7
По умолчанию

Попробуй сначала найти минимум в строке и максимум в столбце
min,max,i,j:integer; //Временные переменные
i1,j1:integer; //Номер твоей строки и стоблца
max:=minint;
for i:=1 to mxn do
if max<a[i] then max:=max[i]

min:=maxint;
for j:=1 to mxn do
if min>a[j] then min:=a[j];

А потом сравнить твою точку и полученные значения

if (TvojaTochka=max)and(TvojaTochka=mi n) then точно минимум в строке и максимум в столбце
else
TvojaTochka:=0;
Попробуй так
Yougan вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
Двумерный массив ISV-777 Помощь студентам 6 10.12.2010 22:42
двумерный массив Laplas Помощь студентам 5 07.01.2010 15:42
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
Двумерный массив Лоя Помощь студентам 10 20.04.2009 19:56