русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задачи поиска


Дата добавления: 2015-07-09; просмотров: 552; Нарушение авторских прав


Основной вопрос задач поиска — где в таблице находится элемент, обладающий нужным свойством. При этом свойство должно быть абсолютным: для определения пригодности элемента достаточно знать только этот элемент.

Большинство задач поиска сводится к простейшей задаче — найти в таблице элемент с заданным значением.

Предположим, что о расположении данных в таблице нет никаких сведений. Тогда проверка одного элемента не дает никакой информации об остальных. Самый разумный способ поиска в этом случае — последовательный перебор.

Будем строить алгоритм поиска методом последовательных приближений. Первый вариант получим, взяв за основу общую схему алгоритмов анализа:

Пример 1. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Найти индекс первого элемента массива, значение которого равно нулю, если таковой существует.

Вариант 1.

program MAS2_F7;

var

a:array[1..100] of integer;

i,n,k,p:integer;

Begin

readln(n);

for i:=1 to n do

read(a[i]);

k:=0;

for i:=1 to n do

if (a[i]=0) and (k=0) then begin writeln(i); k:=1 end;

if k=0 then writeln(‘Net takix elementjb’);

End.

Вариант 2.

program MAS2_F7W;

var a:array [1..100] of integer;

i,n:integer;

begin

readln (n);

for i:=1 to n do read (a[i]);

i:=1;

While (i<= n) and (a[i]<>0)do i:=i+1;

if i>n then writeln('NO') else writeln(i);

end.

Алгоритм получился более компактным и эффективным, хотя и более трудным для построения и понимания.

Следует обратить внимание на порядок записи простых условий в составных условиях цикла и утверждения. Здесь предполагается, что второе условие не проверяется, если результат логического выражения ясен после проверки первого условия. В противном случае при k>N возникает отказ из-за выхода индекса за границы массива.



Пример 2. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an. Поменять местами первый положительный и последний отрицательный.

program a6;

var

i,n,b,k1,k2:integer;

a:array[1..100]of integer;

begin

readln(n);

for i:=1 to n do read(a[i]);

i:=1;

While (i<=n) and ( a[i] <0) do i:=i+1;

if i>n then writeln('NO')

else begin

k1:=i; i:=n;

While (i>=1) and ( a[i]>0) do i:=i-1;

if i<1 then writeln('NO')

else begin

k2:=I;

b:=a[k1];

a[k1]:= a[k2];

a[k2]:=b;

for i:=1 to n do write(a[i],’ ‘);

end;

end;

end.

Пример 3. Пусть дан массив A, состоящий из n элементов: a1, a2, a3, …, an.Найти максимальный элемент и его номер среди четных элементов одномерного массива.

program a3;

var

i,n,m,k,z:integer;

a:array[1..100]of integer;

begin

readln(n);

for i:=1 to n do read(a[i]);

i:=1;

While (i<=n) and ( a[i] mod 2<>0) do i:=i+1;

if i>n then writeln('NO')

else begin

m:=a[i]; k:=i; z:=i;

for i:=z+1 to n do

if ( a[i] mod 2=0) and(a[i]>m) then

Begin

m:=a[i]; k:=i;

end;

writeln(m,’ ‘,k);

end;

end.



<== предыдущая лекция | следующая лекция ==>
Задачи анализа | Задачи перестановки


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.982 сек.