Средние арифметические неотрицательных элементов строк матрицы

Задача: 

Вычислить средние арифметические значения неотрицательных элементов каждой строки матрицы [N;M].

Описание переменных: 
  • a - матрица;
  • sum - сумма неотрицательных элементов текущей строки матрицы;
  • count - количество неотрицательных элементов текущей строки матрицы.
Алгоритм решения задачи: 

Перед просмотром (в данном случае в том же цикле, что и заполнение) строки матрицы присвоить переменным sum и count нули. В цикле если очередной элемент строки больше, либо равен 0, то добавлять значение этого элемента к sum и увеличивать на 1 значение count.

После завершения внутреннего цикла (обработки очередной строки матрицы) вывести на экран среднее арифметическое, вычисляемое как деление sum на count.

Программа на языке Паскаль: 

const N = 10; M = 15;
var 
    a: array[1..N,1..M] of integer;
    sum: word;
    count, i, j: byte;
begin
    randomize;
    for i:=1 to N do begin
        sum := 0;
        count := 0;
        for j:=1 to M do begin
            a[i,j] := random(100) - 50;
            write(a[i,j]:4);
            if a[i,j] >= 0 then begin
                sum := sum + a[i,j];
                count := count + 1;
            end;
        end;
        writeln(' - ', sum/count:4:2);
    end;
end.

Пример выполнения:

  -6  22 -36   6 -32  18  25 -44 -20  29 -27 -38  38 -31  27 - 23.57
  23 -46  27  35  22 -41   4   5 -44  22  16 -28 -42 -28 -38 - 19.25
 -44 -38 -33 -44  25   0  17 -18  34 -50 -17  -9  13 -10  46 - 22.50
 -18 -22 -44  12 -19  44  -6  42  28  -7  49 -31  19 -21   6 - 28.57
  29  28 -42  21 -28 -31 -15 -49  -6  29 -23 -47  31 -18  13 - 25.17
  19   0  13  -2 -44   2   3 -45  35   0  13  27  15 -31  29 - 14.18
   7  43 -21 -29  23 -12 -15 -43 -14 -49  22   1  41 -50  33 - 24.29
  12  28  19 -13 -15  41 -47 -12  21  28   4   0  12  45 -29 - 21.00
  11  41  12 -40  35 -27   5  29  27   9 -12   7  20  -1   8 - 18.55
  31 -17  14 -19 -28 -15 -47 -37 -31  22 -34  40 -47 -18  24 - 26.20

Комментарии

Допоможіть будь ласка Помогите

Умова. Задано матрицю розміром 10х10. Використовуючи VBA в середовищі Excel скласти програму для визначення середнього значення елементів матриці, сума індексів яких більше 10.

Условие. Задано матрицу размером 10х10. Используя VBA в среде Excel составить программу для определения среднего значения элементов матрицы, сумма индексов которых более 10

Задача Массивы и операции над строками

В каждую ячейку двумерного массива поместить числа, равные среднему геометрическому их индексов. Значения в каждой четной строке заменить суммой значений соседних нечетных
строк. Количество строк в массиве должно быть нечетным числом.
Решил в PascalABCNET сталгкнулся с программой, что во free pascal не работает помогите исправить

Var
key: Char;
 
// Процедура вывода массива на экран
Procedure print_massiv(A: array [,] of Real; n, m: Integer);
Var i, j: Integer;
Begin
For i:=0 to n-1 do
Begin WriteLN;
For j:=0 to m-1 do
Write(A[i,j]: 8: 4); End;
End;
 
Procedure worker;
Var
A: array [,] of Real;
i, j, n, m, d: Integer;
Begin
// Инициализация динамического массива
Repeat
Begin
WriteLN('Введите количество строк в массиве, оно должно быть нечётным');
ReadLN(n);
End;
Until n mod 2 <> 0;
WriteLN('Введите количество столбцов в массиве');
ReadLN(m);
A:=new Real [n,m];
// Расчёт элементов массива
For i:=0 to n-1 do
For j:=0 to m-1 do
A[i,j]:=sqrt((i+1)*(j+1));
print_massiv(A, n, m);
WriteLN; // Пустая строка для более удобного чтения результатов программы
// Преобразование элементов массива
For i:=0 to n-1 do
Begin d:=i mod 2; If d<>0 Then
For j:=0 to m-1 do
A[i,j]:=A[i-1,j]+A[i+1,j]; End;
print_massiv(A, n, m);
WriteLN;
End;
 
Begin
worker;
While true do
Begin
WriteLN ('Для продолжения работы программы введите <1>, для выхода <0>');
ReadLN (key);
Case key of
#49: worker;
#48: Halt(1);
End;
End;
End.

Помогите пожалуйста!Не могу понять, что не так?

В файле 1.pas дана матрица , причем ее размерность заранее неизвестна. Записать в другой файл строку, составленную из средних арифметических элементов столбцов матрицы.

VAR
  A: array[1..99] of array[1..99] of real; //исходная матрица
  B: array[1..99] of real; //массив сумм
  F:TextFile;
  S : real;
  N,M,i,j:integer;
begin
  AssignFile(F,'l.txt');  //связываем переменную с первым файлом
  RESET(F); //открываем файл для чтения
  N:=0;
  WHILE NOT EOF(F) DO
  BEGIN
    M:=0;
    INC(N);
    WHILE NOT EOLN(F) DO
    BEGIN
     INC(M);
     READ(F,A[N,M]);
    END;
    READLN(F);
  END;
  CloseFile(F);
  AssignFile(F,'l1.txt');
  Rewrite(F);
  for i:=1 to M do
  begin
    S:=0;
    for j:=1 to N do
    If a[i,j]>0 then
    begin
      S:=S+A[j][i]; //подсчет суммы столбца
    end;
      B[i]:=S/M;
    end;
    write(F,B[i]:3:3,' '); //запись суммы в новый файл
    Writeln(B[i]);
end.

я не знаю под какой у вас

я не знаю под какой у вас компилятор, у меня стоит freepascal. На первый взгляд странно, что файл объявляется как текстовый, а считываются вещественные числа.