Лекция 8. Матрицы. Параметрический цикл (часть 2) (1152911), страница 2
Текст из файла (страница 2)
«Информатика. Язык Питон»ВАЖНО! Несмотря на то, что абсолютно все переменные у насопределены как целое, одна из них, а именнодолжна бытьопределена как вещественное (так как, например (1+2)/2 = 1.5 ).Метод.1. Положим начальные значения переменных:и обнулим массив.2. Организуем внешний цикл по строкам (,,): Организуем внутренний цикл по столбцам , т.е. для текущейстроки , просматриваем все ее элементы: Если, то накапливаем суммарное значениеви увеличиваем счетчик положительныхэлементов в этой строке, счетчик – это элемент массивапод индексом текущей строки . Иначе ничего не делаем. После просмотра всей -й строки, накапливаем числонеотрицательных элементов во всей матрице, увеличивая значениена число, найденных в строке неотрицательных элементов.3. Проверяем, а были ли вообще в матрице неотрицательные элементы: Если нет (), то выводим сообщение об этом на экран– «среднее арифметическое посчитать не из чего»; Иначе: выводим на экран значения построчных счетчиков, т.е.
всеэлементы массивадля. считаем среднее:. Выводим на экран.11Воробьева И.А. «Информатика. Язык Питон»началосчитаем, что n, A(n,n) – заданы,Sums = 0, Num = 0, Smid = 0,Mas(n) = (0, 0,.. ,0).Блок-схема(алгоритм)решения задачи.For i=0; n-1; +1For j=0; n-1; +1даifA[i][j] ≥ 0нетMas[i] = Mas[i] + 1;Sums=Sums + A[i][j]Num = Num + Mas[i]даifNum > 0нетFori=0; n-1; +1вывод Mas[i]Smid = Sums/Num«Нет неотрицательныхэлементов»вывод Smidконец12Воробьева И.А. «Информатика.
Язык Питон»Таблица 5.2. Фрагмент кода решения задачи 5.3.# РАЗДЕЛ КОНСТАНТNMAX = 10 # максимальный размер матрицы и массива# РАЗДЕЛ ПЕРЕМЕННЫХA=[0]*NMAX # целочисленная матрица максимального размераfor i in range(NMAX): A[i]=[0]*NMAX # инициализирована «0»Mas=[0]*NMAX # массив результата, инициализирован «0»Smid = 0.0 # среднее арифметическое неотрицательных элементов матрицыSums = 0 # сумма неотрицательных элементов матрицыNum = 0 # число неотрицательных элементов матрицыi = j = 0 # индексация# РАЗДЕЛ ОПЕРАТОРОВ{ввод реальной размерностии матрицы}{вывод исходных данных на экран}# начало алгоритма, начальные значения уже имеют нужные значенияfor i in range(n): #for j in range(n): #if A[i][j] >= 0: # встретили неотрицательный элементSums=Sums+A[i][j]# накапливаем сумму неотрицательныхMas[i] +=1 # увеличили счетчик неотрицательных для данной строки# внутренний for законченNum = Num+Mas[i] # увеличили общий счетчик неотрицательных для матрицы# внешний for закончен13Воробьева И.А.
«Информатика. Язык Питон»# вывод результата в форме основного и альтернативного решенийif Num > 0:# основное решениеprint(‘Число неотрицательных построчно:’)for i in range(n): # вывод массива результатаprint(‘строка {0:2d}= {1:2d}’ . format(i+1, Mas[i]))Smid=Sums/s # среднее арифметическое всех неотрицательныхprint(‘Среднее арифметическое неотрицательных элементов матрицы= ’, Smid)else:# альтернативное решениеprint(‘В матрице нет неотрицательных элементов.’).Замечание 5.5.
Если в задаче требуется сформировать какой-либо массиврезультата на основании вычислений в столбцах, принципиальное отличие оталгоритма, приведенного для задачи 5.3., будет только в двух пунктах: внешний и внутренний цикл меняются местами, т.е. внешний цикл проходитпо числу столбцов, а внутренний по числу строк; еслиэлементматрицы, то внешний цикл строят по индексу , а внутренний по индексу ; размерность результирующего массива совпадает с числом столбцов (этоважно для прямоугольных матриц)..