Главная страница
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.015 c
14-87053
Лёха2003
2003-01-05 14:51
2003.01.27
Создание ядра ОС


7-87159
surkis
2002-11-14 13:01
2003.01.27
Права админа для проги


1-86835
Hooch
2003-01-19 11:31
2003.01.27
Восстановление MS SQL БД из лога


14-87108
kronprince
2003-01-09 17:21
2003.01.27
Извините за offtopic :)О разнице Microsoft VC vs Borland CB


1-86743
sanik
2003-01-16 03:13
2003.01.27
Поле выбора даты как сделать пустым изначально?