Turbo delphi среднее арифметическое

Turbo delphi среднее арифметическое.
Ребят помогите пожалуйста. Дана матрица м на н. Подсчитать среднее арифметическое отрицательных элементов этой матрицы не используя выбирающих (условных) конструкций. Всё бы ничего если бы можно было бы использовать условную конструкцию. Я бы давно уже решил. Но самая загвозтка как раз в этом.

  • В Delphi есть такая замечательная функция sign(x), возвращающая -1, если x отрицательный, 0, если 0, и 1, если положительный.
    Следовательно, x*(1-sign(x))/2 для отрицательных чисел будет равно x, для 0 - 0, для положительных - тоже 0.
    Кроме того, вместо if можно использовать while с break:
    if x<0 then ...=> while x<0 then begin ...break end;
    Но в условии говорится именно про условные конструкции, а не if, думаю, такое тоже запрещено.
  • Любую управляющую конструкцию любого языка всегда можно заменить на цикл с предусловием (While).

    count:=0;summ:=0;
    for i:=1 to N do
    for j:=1 to M do
    while M [ i, j ] < 0 do begin
    inc ( summ, M [ i, j ] );
    inc ( count );
    M [ i, j ] := 0;
    end;
    mid := summ / count;