Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Задача. Определить, есть ли в заданном массиве элемент, равный 0.
Опишем логическую функцию, значение которой равно истине, если такой элемент есть, и ложь в противном случае. Самый простой способ - это просматривать элементы и, если найден искомый элемент, то присвоить функции значение True, иначе - False.
Function Check1(X: MyArray; n, m: integer): Boolean; Var i, j: integer; Flag: Boolean; Begin Flag:= False; {Предполагаем, что искомого элемента в массиве нет} i:= 1; while not(Flag) and (i<=n) do {элемент не найден и строки не закончились} begin j:= 1; while (j<=m) and (X[i, j]<>0) do {перебираем все элементы текущей строки, пропуская ненулевые элементы} Inc(j); Flag:= not(j=m+1);{если искомый элемент найден, то переменной Flag присваиваем значение True} Inc(i); end; Check1:= Flag; End; |
Задача. Определить, является ли данный квадратный массив симметричным относительно своей главной диагонали.
В задачах подобного типа необходимо увидеть зависимость между индексами элементов массива. Для этого удобно представить массив в виде таблицы, обозначив элементы, например, буквой а и написав рядом их индексы.
Заметим, что если массив является симметричным, то для него выполняется равенство A[i, j]=A[j, i] для всех i=1,..., n и j=1,..., n. Поэтому можно составить следующую функцию:
Function Check2(X: MyArray; n, m: integer): Boolean; Var i, j: integer; Flag: Boolean; Begin Flag:= True; {Предполагаем, что матрица симметрична} i:= 2; while Flag and (i<n) do begin j:= 1; while (j<i) and (X[i, j]=X[j, i]) do Inc(j); Flag:= (j=i); Inc(i); end; Check2:= Flag; End; |
Вопрос. Почему в функции употребляется условие i>j? Можно ли без него обойтись и что при этом изменится?
Дата публикования: 2015-10-09; Прочитано: 257 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!