Среднее арифметическое положительных элементов матрицы - 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;
Объяснение кода листинга программы
- function FAVR(const S: TArray; const n, m: TRange): Real;
- Это объявление функции FAVR. Функция принимает в качестве аргументов массив S, и два числа n и m.
- var i, j: TRange;
k: integer;
- Здесь объявляются переменные i, j как TRange и переменная k как integer.
- begin
- Начало основного блока кода.
- Result := 0;
- Присваиваем переменной Result значение 0.
- for i := 1 to n do
for j := 1 to m do
- Цикл for от 1 до n для i и от 1 до m для j.
- if (S[i, j] > 0)
- Проверка, если элемент массива S[i, j] больше нуля.
- then
- Если условие true, выполняем следующий блок.
- begin
- Начало блока кода.
- inc(k);
- Увеличиваем значение переменной k на 1.
- Result := Result + S[i, j];
- Добавляем значение S[i, j] к переменной Result.
- end;
- Конец блока кода.
- Result := Result /k;
- Результат делится на k.
- end;
- Конец функции. Данный код выполняет вычисление среднего арифметического положительных элементов матрицы, переданной в массиве S.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д