использование MathMin при нулевом значении переменной... - страница 2

[Удален]  
TheXpert >>:


(1) Заводим промежуточный массив. (2) Очищаем. (3) Если значение подходит, добавляем его в массив. (4) В массиве ищем нужные значения функциями ArrayMinimum, ArrayMaximum.

По четвертому пункту более-менее понятно. По первым трем - покажите на пальцах как это сделать......

 
{
   double value1, value2, value3, value4;
   // ... высчитываем значения
   
   double array[];
   ArrayResize(array, 4); // по кол-ву переменных

   int pos = 0;
   
   if (value1 != 0 && value1 != EMPTY_VALUE)
   {
      array[pos] = value1;
      pos++;
   }
   
   // заполняем массив подходящими значениями
   if (value2 != 0 && value2 != EMPTY_VALUE)
   {
      array[pos] = value2;
      pos++;
   }

   if (value3 != 0 && value3 != EMPTY_VALUE)
   {
      array[pos] = value3;
      pos++;
   }

   if (value4 != 0 && value4 != EMPTY_VALUE)
   {
      array[pos] = value4;
      pos++;
   }
   
   // удаляем ннужную часть массива
   ArrayResize(array, pos);
   
   // собственно, результат
   double min = ArrayMinimum(array);
}

Или так:

void AddValue(double[] array&, double value, int& pos)
{
   if (value != 0 && value != EMPTY_VALUE)
   {
      array[pos] = value;
      pos++;
   }
}

{
   double value1, value2, value3, value4;
   // ... высчитываем значения
   
   double array[];
   ArrayResize(array, 4); // по кол-ву переменных
   int pos = 0;
   
   AddValue(array, value1, pos);
   AddValue(array, value2, pos);
   AddValue(array, value3, pos);
   AddValue(array, value4, pos);

   ArrayResize(array, pos);
   
   double min = ArrayMinimum(array);
}
Не проверял. Вобщем как-то так.
 
Azerus >>:


попытался: нижняя граница отрисовывается хорошо; но верхняя граница в некоторых случаях улетает в небеса..........

ок, сделаем так:

if (A==0) A=9999;
if (B==0) B=9999;
if (C==0) C=9999;
if (D==0) D=9999;

double low_border=MathMin(A,B,C,D);

if (A==9999) A=-9999;
if (B==9999) B=-9999;
if (C==9999) C=-9999;
if (D==9999) D=-9999;

double high_border=MathMax(A,B,C,D);
 
TheXpert >>:
зачем сортировать?
  double adArray[4];
  double dMax = 0;
  ArraySort(aiArray, WHOLE_ARRAY, 0, MODE_DESCEND);
  dMax = aiArray[0];
По моему, проще некуда...
 
А произведение наверное через степень вычисляете?
 
TheXpert >>:
А произведение наверное через степень вычисляете?

А Вы любите изобретать уже изобретённое (по другому - велосипеды)? 

[Удален]  
neoclassic >>:

ок, сделаем так:



Все получилось! Огромное спасибо!