Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Определить, отвечает ли заданный массив некоторым требованиям

Тема. Понятие двумерного массива. Описание типа массива. Формирование значений элементов массива случайным образом. | Формирование значений элементов массива случайным образом и с клавиатуры и вывод их на экран | Задачи для самостоятельного решения | Вставка строк и столбцов | Задачи для самостоятельного решения | Задачи для самостоятельного решения | Тема. Самостоятельное решение задач. | Тема. Контрольная работа | Графические программы с применением массивов. |


Читайте также:
  1. Вот и резиденция Легиона. Массивные металлические ворота бесшумно распахнулись, лимузин плавно въехал во двор и остановился. Подскочившие охранники ту же открыли двери.
  2. Вы отвечаете на телефонный звонок
  3. Графические программы с применением массивов.
  4. Есть ли в данном массиве элементы с данным свойством?
  5. Задание № 2. Массивы
  6. Заявки, не соответствующие изложенным выше требованиям, к участию в Конкурсе не допускаются.
  7. Значение для угла заполнения положительное – массив строится против часовой стрелки, отрицательное – по часовой стрелке.

Задача. Определить, есть ли в заданном массиве элемент, равный 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;

Задача. Определить, является ли данный квадратный массив симметричным относительно своей главной диагонали.

В задачах подобного типа необходимо увидеть зависимость между индексами элементов массива. Для этого удобно представить массив в виде таблицы, обозначив элементы, например, буквой а и написав рядом их индексы.

а11 а 12 а 13 а 14 а 15 а 16 а 17
а 21 а 22 а 23 а 24 а 25 а 26 а 27
а 31 а 32 а 33 а 34 а 35 а 36 а 37
а 41 а 42 а 43 а 44 а 45 а 46 а 47
а 51 а 52 а 53 а 54 а 55 а 56 а 57
а 61 а 62 а 63 а 64 а 65 а 66 а 67
а 71 а 72 а 73 а 74 а 75 а 76 а 77

Заметим, что если массив является симметричным, то для него выполняется равенство 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-02; просмотров: 48 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Нахождение количества элементов с данным свойством| Изменение значений некоторых элементов, удовлетворяющих заданному свойству

mybiblioteka.su - 2015-2024 год. (0.011 сек.)