Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как проще в массиве найти минимальное и максимальное значение ? [D5, WinME]


Кен ©   (2003-01-18 04:44:00) 

Чую, что есть какая то функция, но как она называется ? Числа - Extended. Массив трёхмерный. Подскажите, пожалуйста !


Кен   (2003-01-19 05:39:00) [1]

Спасибо за помощь !


- Tsatur -   (2003-01-19 01:55:00) [2]

var
a:array[1..10,1..10,1..10] of integer
x:extended;
i,j,k:integer;

begin
x:=0;
for i:=1 to 10 do
for j:=1 to 10 do
for k:=1 to 10 do
if x< a[i,j,k] then x:=a[i,j,k]


Sha   (2003-01-18 11:09:00) [3]

> Думкин © (18.01.03 11:06)
> Иногда важнее не крутота - а понимание того что делаешь. :-)

Согласен. Но тут вроде никто не говорил, что у него с этим проблемы. :-)


Думкин   (2003-01-18 11:06:00) [4]


> Sha © (18.01.03 10:45)
> В три цикла - не круто, можно в один (пример для целых чисел):

Иногда важнее не крутота - а понимание того что делаешь. :-)


Sha   (2003-01-18 10:45:00) [5]

> Кен (18.01.03 04:44)
> Как проще в массиве найти минимальное и максимальное значение ?

Проще не искать :). Откуда в нем берутся значения? Если заносишь сам, то по ходу дела и определяй все, что надо.

Если все же надо искать, то напиши свою процедуру, которая за один проход ищет оба значения.

Если массив маленький, а ищешь часто, подумай об отимизации.
Внутренний цикл делай по самому большому измерению, внешний - по самому малому. Еще лучше переопределить массив через absolute и рассчитать все по единственному мзмерению.


> Думкин © (18.01.03 09:39)
> ...Поэтому пиши свою - в три цикла. :-)

В три цикла - не круто, можно в один (пример для целых чисел):

procedure TForm1.Button1Click(Sender: TObject);
type
TMinMaxFunc=function(Data: pointer; Bound: Integer): Integer;
const
m=10; n=10; k=10;
var
f: TMinMaxFunc;
a: array[1..m,1..n,1..k] of integer;
begin
@f:=@MaxIntValue; Showmessage(IntToStr(f(@a[1,1,1],m*n*k-1)));
end;


Думкин   (2003-01-18 09:39:00) [6]

Посмотрел.
Реализация оригинальностью не отличается - стандартно.
Поэтому пиши свою - в три цикла. :-)


Думкин   (2003-01-18 09:17:00) [7]

В одномерном случае в модуле Math есть функции MaxValue,MinValue.
Посмотри тамошнюю реализациию - и реализуй свою.


Наверх

Титульная страница Поиск, карта сайта Написать письмо