мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
pascal4beginners-algorithm [24/01/2012 11:19] ocapascal4beginners-algorithm [27/01/2012 12:06] oca
Строка 4: Строка 4:
  
 Источник [[http://codingrus.ru/readarticle.php?article_id=2189|]] Источник [[http://codingrus.ru/readarticle.php?article_id=2189|]]
- 
- 
  
 Рассмотрим сначала нюансы реализации “технических” задач поиска, которые встречаются в различных алгоритмах. Начнем с, казалось бы, тривиальной задачи поиска элемента в неупорядоченном массиве. Во всех примерах, относящихся к поиску в одномерном массиве будем использовать следующую переменную a: Рассмотрим сначала нюансы реализации “технических” задач поиска, которые встречаются в различных алгоритмах. Начнем с, казалось бы, тривиальной задачи поиска элемента в неупорядоченном массиве. Во всех примерах, относящихся к поиску в одномерном массиве будем использовать следующую переменную a:
Строка 11: Строка 9:
 a:array[0..N] of <скалярный тип>; a:array[0..N] of <скалярный тип>;
 </code> </code>
- 
  
 при этом собственно элементы массива, которые мы будем рассматривать, пронумерованы от 1 до N, а нулевой элемент будем использовать как вспомогательный в случае необходимости. Конкретный же тип элемента в большинстве описываемых алгоритмов не важен, он может быть как любым числовым, так и символьным или даже строковым. Алгоритм поиска в массиве элемента, значение которого равно K, может выглядеть так: при этом собственно элементы массива, которые мы будем рассматривать, пронумерованы от 1 до N, а нулевой элемент будем использовать как вспомогательный в случае необходимости. Конкретный же тип элемента в большинстве описываемых алгоритмов не важен, он может быть как любым числовым, так и символьным или даже строковым. Алгоритм поиска в массиве элемента, значение которого равно K, может выглядеть так:
Строка 17: Строка 14:
 i:=0; i:=0;
 repeat repeat
-i:=i+1 +  i:=i+1 
-until (i=N) or (a[i]=K);+until (i=N) or (a[i]=K);  
 if a[i]=K then write(i) if a[i]=K then write(i)
 else write(0) else write(0)
 +
 {следующее неверно (!!!): {следующее неверно (!!!):
 if i=N then write(0) if i=N then write(0)
Строка 31: Строка 30:
 a[0]:=K; a[0]:=K;
 i:=N; i:=N;
 +
 while (a[i]<>K) do while (a[i]<>K) do
-i:=i-1;+  i:=i-1; 
 +  
 write(i) write(i)
 </code> </code>
Строка 50: Строка 51:
 if a[i]>a[imax] then imax:=i if a[i]>a[imax] then imax:=i
 </code> </code>
- 
  
  
Строка 57: Строка 57:
 max:=-MaxInt-1;{это минимальное число типа integer} max:=-MaxInt-1;{это минимальное число типа integer}
 min:=MaxInt;{это максимальное число типа integer} min:=MaxInt;{это максимальное число типа integer}
 +
 for i:=1 to N do for i:=1 to N do
 if a[i] if a[i]
Строка 97: Строка 98:
 Обозначение [] соответствует для неотрицательных чисел округлению до ближайшего целого числа, большего или равного выражению в указанных скобках, в отличие от целой части, где округление производится до ближайшего целого, меньшего или равного рассматриваемому выражению. Обозначение [] соответствует для неотрицательных чисел округлению до ближайшего целого числа, большего или равного выражению в указанных скобках, в отличие от целой части, где округление производится до ближайшего целого, меньшего или равного рассматриваемому выражению.
  
 +==== Создание лабиринта ====