![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 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. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 28.05.2011
Сообщений: 5
|
![]()
Помагите кто чем может!!очень срочно нужно!!
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 21.10.2010
Сообщений: 588
|
![]()
Посмотрите здесь
https://programmersforum.ru/showthread.php?t=146790
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681 |
![]() |
![]() |
![]() |
#4 |
Регистрация: 28.05.2011
Сообщений: 5
|
![]()
Так мне надо составить в Delphi с компанентами и с подпрограммами
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 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; Попробуй так |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Одномерный массив и Двумерный массив | 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 |