Среднее арифметическое положительных элементов матрицы - Pascal (80500)

Узнай цену своей работы

Формулировка задачи:

В данном программе считается среднее арифметическое положительных элементов матрицы. Помогите найти ошибку,дело в том что отбираются все положительные элементы,но делятся они не на количество положительных а на количество всех елементов матрицы,включая негативных.Собвственно как сделать что-бы делилось тоже только на количество положительных элементов?
Program v21;
const MAX = 12;
type
    TRange = 1..MAX;
    TArray = Array[TRange, TRange] Of ShortInt;
function FAVR(const S: TArray; const n, m: TRange): Real;
var  i, j: TRange;
begin
    Result := 0;
    for i := 1 to n do
        for j := 1 to m do
            if (S[i, j] > 0)
            then
                Result := Result + S[i, j];
    Result := Result / n / m;
end;
procedure PAVR(const S: TArray; const n, m: TRange; var Result: Real);
var
    i, j: TRange;
begin
    Result := 0;
    for i := 1 to n do
        for j := 1 to m do
            Result := Result + S[i, j];
    Result := Result / n / m;
end;
var
    S: TArray;
    i, j, n, m: TRange;
    res: Real;
begin
    Write('Introduceti lungimea tabloului:'); ReadLn(n);
    Write('Introduceti latimea tabloului:'); ReadLn(m);
    Randomize;
    for i := 1 to n do
    begin
        for j := 1 to m do
        begin
            S[i, j] := Random(199) - 99;
            Write(S[i, j]:4);
        end;
        WriteLn;
    end;
    WriteLn('Media elementelor pozitive din tablou este ', FAVR(S, n, m):0:2);
end.
Простите,я случайно не там где надо создал тему...

Решение задачи: «Среднее арифметическое положительных элементов матрицы»

textual
Листинг программы
function FAVR(const S: TArray; const n, m: TRange): Real;
var  i, j: TRange;
k:integer;
begin
    Result := 0;
    for i := 1 to n do
        for j := 1 to m do
            if (S[i, j] > 0)
            then
               begin
                inc(k);
                Result := Result + S[i, j];
               end;
    Result := Result /k;
end;

Объяснение кода листинга программы

  1. function FAVR(const S: TArray; const n, m: TRange): Real;
    • Это объявление функции FAVR. Функция принимает в качестве аргументов массив S, и два числа n и m.
  2. var i, j: TRange; k: integer;
    • Здесь объявляются переменные i, j как TRange и переменная k как integer.
  3. begin
    • Начало основного блока кода.
  4. Result := 0;
    • Присваиваем переменной Result значение 0.
  5. for i := 1 to n do for j := 1 to m do
    • Цикл for от 1 до n для i и от 1 до m для j.
  6. if (S[i, j] > 0)
    • Проверка, если элемент массива S[i, j] больше нуля.
  7. then
    • Если условие true, выполняем следующий блок.
  8. begin
    • Начало блока кода.
  9. inc(k);
    • Увеличиваем значение переменной k на 1.
  10. Result := Result + S[i, j];
    • Добавляем значение S[i, j] к переменной Result.
  11. end;
    • Конец блока кода.
  12. Result := Result /k;
    • Результат делится на k.
  13. end;
    • Конец функции. Данный код выполняет вычисление среднего арифметического положительных элементов матрицы, переданной в массиве S.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы