Нахождение количества элементов
С данным свойством
Задачи на нахождение номеров элементов с заданными свойствами и на нахождение количества таких элементов во всем массиве решаются практически так же, как и для одномерных массивов. Необходимо лишь добавить второй цикл ко второму индексу. Пример 1 Найти максимальный элемент массива и его индексы. Решение Так как элементы могут повторяться, то договоримся, что будем запоминать только индексы первого максимального элемента. Опишем процедуру, которой передается массив. Ее результатом являются значение максимального элемента и индексы первого элемента с максимальным значением. Program Example_112; Procedure Maximum(x: dmyarray; Var max, maxi, maxj: Integer); Var i, j: Integer; Begin max:=x[1,1]; maxi:=1; maxj:=1; {Начальные значения} For i:=1 To n Do For j:=1 To m Do If x[i,j]>max Then Begin {Новые значения) max: =x[i,j]; maxi:=i; maxj:=j; End; End; Пример 2 Найти количество отрицательных элементов в каждой строке. Решение Рассмотрим несколько вариантов решения этой задачи. Можно хранить количество отрицательных элементов каждой строки в одномерном массиве соответствующей размерности. Program Example_113; Procedure Q1(x: dmyarray; Var у: omyarray); Var i, j: Integer; Begin For i:=1 To n Do Begin y[i]:=0; For j:=1 To m Do If x[i,j]<0 Then Inc (y[i]); End; End; Можно использовать счетчик, находить количество отрицательных элементов строки и сразу выводить найденное значение на экран. Program Example_114; Procedure Q_2(x: dmyarray); Var i, j, k: Integer; Begin For i:=1 To n Do Begin k:=0; For j:=1 To m Do If x[i,j]<0 Then Inc(k); Writeln (i,'-', k); {Вывод номера строки и количества отрицательных элементов} End; End; Работа с несколькими Массивами
Пример Составить программу вычисления произведения двух квадратных целочисленных матриц − А и В − размером 5х5. Элементы результирующей, также целочисленной, матрицы С (размером 5х5) определяются по формуле где n − размерность. Решение Формировать матрицы будем с помощью генератора случайных чисел, вычислять значения элементов результирующей матрицы С − посредством вложенных циклов. Во внутреннем цикле (по параметру k) будет накапливаться сумма, определяющая элемент с[i, j] . Program Example_115; Const n=5; Type dmyarray=Array[1..n, 1..n] Of Integer; Var А, В, С: dmyarray; Procedure Init(Var x: dmyarray); Procedure Print (x: dmyarray); Procedure Mult(x,y: dmyarray; Var z: dmyarray); Var k, i, j: Integer; Begin For i:=1 To n Do For j:=1 To n Do Begin z[i,j]:=0; For k:=1 To n Do z[i,j] :=z[i,j]+x[i,k]*y[k,j]; End; End; Begin Writeln('матрица A:'); Init(A); Print(A); Writeln('матрица В:'); Init(В); Print(В); Mult(А, В, С); Writeln('матрица С:'); Print(с); Readln; End. Определить, отвечает ли заданный массив некоторым требованиям
Пример 1 Определить, есть ли в данном массиве элемент, равный 0. Решение Опишем логическую функцию, значение которой равно "истина", если такой элемент есть, и "ложь" − в противном случае. Будем просматривать элементы массива и, если найден искомый, то присвоим функции значение True, иначе − False. Program Example_116; Function Checkl(x: dmyarray): Boolean; Var i, j: Integer; t: Boolean; Begin t:=False; {Предполагаем, что искомого элемента в массиве нет} i:=1; While (not t) And (i<=n) Do Begin j:=1; While (j<=m) And (x[i, j]<>0) Do Inc(j); t:=(j<=m); {Определяем, найден ли искомый элемент; если просмотрена вся строка, то значение j=m+1 и t:=False, иначе элемент найден и t:=True} Inc(i); End; check1:=t; End; Пример 2 Определить, является ли данная квадратная матрица симметричной относительно своей главной диагонали. Решение Если для всех i=1,..., n и j=1,...,n, i>j выполняется равенство a[i, j]=a[j, i], то матрица является симметричной. Поэтому можно составить следующую функцию: Program Example_117; Function Check2(x: dmyarray): Boolean; Var i, j: Integer; t: Boolean; Begin t:=True; {Предположим, что матрица симметрична} i:=2; While t And (i<n) Do Begin j:=1; While (j<i) And (x[i,j] =x[j,i])Do Inc(j); t:=(j=i); Inc(i); End; Check2:=t; End; Таким образом, если встретится хотя бы одна такая пара, что соответствующие элементы не будут равны, то функция вернет значение "ложь" (False). Изменение значений некоторых Элементов, обладающих заданным Свойством Решение таких задач похоже на решение задач для одномерных массивов. Пример 1 В массиве размерностью nxm к элементам четных столбцов прибавить элемент первого столбца соответствующей строки. Program Example_118; Procedure Substitution1 (Var x: dmyarray); Var i, j: Integer; Begin For i:=1 To n Do For j:=1 to m Div 2 Do {рассмотрим четные столбцы матрицы} Inc(x[i, 2*j], x[i, 1]) End; Пример 2 Заменить все отрицательные элементы на противоположные. Program Example_119; Procedure Substitution2 (Var x: dmyarray); Var i, j: Integer; Begin For i:=1 To n Do For j:=1 To m Do x[i, j]:=abs(x[i, j]); End;
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (660)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |