Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.27;
Скачать: CL | DM;

Вниз

Как проще в массиве найти минимальное и максимальное значение ?   Найти похожие ветки 

 
Кен   (2003-01-18 04:44) [0]

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


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

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


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

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


 
Sha ©   (2003-01-18 10:45) [3]

> Кен (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 11:06) [4]


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

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


 
Sha ©   (2003-01-18 11:09) [5]

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

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



 
- Tsatur - ©   (2003-01-19 01:55) [6]

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]


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

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



Страницы: 1 вся ветка

Текущий архив: 2003.01.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
4-87205
kofman
2002-12-12 00:14
2003.01.27
Как после восстановления проги из трея расположит ее поверх всех?


1-86794
Programist21
2003-01-18 13:58
2003.01.27
ListView (vsReport) в XP


14-87135
mate
2003-01-10 11:12
2003.01.27
SQL Server 7.0


14-87051
Makhanev A.S.
2003-01-11 13:49
2003.01.27
Сколько раз можно перезаписывать инфу на CD-RW -шку?


1-86776
Бук
2003-01-16 07:26
2003.01.27
Иконки для формы