Ну вот, пока без комментариев по 1му вопросу. балы можете не добавлять. Только тут ведется просмотр всего массива от B[1, 1] до B[n, m] чтобы начинать просмотр скажем с [10, 10] надо вначале i j присвоить 10, и при переходе к следующему столбцу после приращения j на 1,устанавливать i:=10 Далее что нужно, чтобы переделать его во 2е задание. Принцип пробега по массиву не меняется. Но теперь вместо min и max будем работать с рабочими переменными SUM и Pr. В SUM накапливаем сумму положительных. Начальное значение можно взять равное нулю. Затем пробегаем по циклу сравниваем текущий элемент B[i, j] c 0 если B[i, j]>0, то добавляем его в сумму SUM:=SUM+B[i, j] В противном случае переходим к следующему элементу. Сложнее будет с произведением. Механизм накопления можно реализовать аналогично а вот какое присвоить начальное значение. 0? ну тогда, что бы мы не нашли произведение с 0 будет 0. 1? а вдруг вообще нет отрицательных элементов, а у нас произведение получится равным 1. Мне кажется надо сначала присвоить ему значение 0. А затем при пробежке по массиву при нахождении отрицательного числа сравнить произведение Pr с нулем Pr=0? да тогда переопределяем его так: Pr:=B[i, j] (присваем ему значение найденного отрицательного элемента) . Pr≠0? тогда переопределяем его так: Pr:=Pr*B[i, j]
P.S. И все-таки лучше уточнить у преподавателя, к чему относится отрезок. Т.е. это диапазон индексов поиска i, j? Или все же диапазон возможных значений элементов массива B[i, j]. Хотя можно выбрать один из вариантов и самому и оговорить его по ходу решения.(По-моему проще принять это как диапазон возможных значений элементов массива.) На мой взгляд в условии следовало это оформить отдельным предложением. Например: Числовые значения элементов массива принадлежат отрезку [-100; 100].
1. Современное решение (быстро, просто и легко) // PascalABC.NET 3.2, сборка 1439 от 09.05.2017 // Внимание! Если программа не работает, обновите версию!
begin Writeln('Ср.арифм: ',ReadSeqRealWhile(k->k>=0).Average:0:4) end.
Пример 23 11.7 0 12.9 16.7 13 -12 Ср.арифм: 12.8833
2. Школьный вариант в стиле "1983г." (Turbo Pascal 7.0)
uses Crt; var n:integer; x,a:real; begin a:=0; n:=0; repeat Read(x); if x>=0 then begin n:=n+1; a:=a+x end until x<0; a:=a/n; Writeln('Ср.арифм: ',a:0:4); ReadKey end.
5
8
3
9
1
2
6
10
7
я не знаю, может так