Среднее арифметическое положительных элементов матрицы - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д