Вычислить средние арифметические значения неотрицательных элементов каждой строки матрицы [N;M].
Перед просмотром (в данном случае в том же цикле, что и заполнение) строки матрицы присвоить переменным 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
Комментарии
Помогите пожалуйста!Не могу понять, что не так?
В файле 1.pas дана матрица , причем ее размерность заранее неизвестна. Записать в другой файл строку, составленную из средних арифметических элементов столбцов матрицы.
я не знаю под какой у вас
я не знаю под какой у вас компилятор, у меня стоит freepascal. На первый взгляд странно, что файл объявляется как текстовый, а считываются вещественные числа.