русс | укр

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

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

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

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


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

Поиск элементов, обладающих заданным свойством


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


i:=1; {Поиск элементов равных заданному например – 3}

while (i<=10) and (a[i]<>3) do i:=i+1;

if i>10

then writeln('3 нет ')

else writeln('первая 3 имеет индекс ',i);

Пусть у нас A[i] содержит оценки по информатике 10 учеников. Требуется выяснить имеется ли среди них хоть один ученик, имеющий тройку.

Конечно, можно было воспользоваться алгоритмом подсчета элементов, обладающих заданным свойством :

s:=0;

for i:=1 to 10 do

if a[i]=3 then s:=s+1;

if s=0

then writeln ('троечников нет')

else writeln ('троечник есть');

Правда в таком варианте нам не удается выяснить, а кто именно троечник (т.е. какой номер элемента, равного 3)?

Можно подправить предыдущий алгоритм следующим образом:

s:=0;

for i:=1 to 10 do

if a[i]=3 then begin s:=s+1; k:=i; end;

if s=0

then writeln ('троечников нет')

else writeln ('троечник есть, его номер',k);

Но основной недостаток такого подхода заключается в том, что мы вынуждены просматривать все элементы массива, хотя ответ на свой вопрос мы могли узнать уже после просмотра первого элемента - если он и оказался троечником. В случае 10 элементов в массиве это может и не трагедия, а если элементов в массиве 10 миллионов?

На этот случай в языке программирования ПАСКАЛЬ и предусмотрен оператор WHILE, используемый в данном алгоритме:

i:=1; {Поиск элементов равных заданному например – 3}

while (i<=10) and (a[i]<>3) do i:=i+1;

if i>10

then writeln('3 нет ')

else writeln('первая 3 имеет индекс ',i);

По обыкновению рассмотрим алгоритм построчно:

i:=1;

I присваиваем значение 1. I у нас будет переменная, в которой хранится номер текущего элемента массива A.

while (i<=10) and (a[i]<>3) do i:=i+1;

Буквально это читается так: Пока (i<=10) и (a[i]<>3) делать i:=i+1. А применительно к нашей задаче : Пока (массив не кончился) и (текущий элемент в массиве не тот, что мы ищем) (т.е. элемент не обладает нужным нам свойством) делать – взять следующий элемент. Из этого оператора ПОКА программа может выйти одним из двух способов:



1) в процессе прибавления 1 к I (взятия следующих элементов) так и не нашлось нужного нам элемента

2) нужный элемент нашелся при некотором i

if i>10

then writeln('3 нет ')

else writeln('первая 3 имеет индекс ',i);

Как раз по причине 2-х вариантов следом и стоит оператор IF (ЕСЛИ) анализирующий, как именно закончился оператор ПОКА, и выдающий нам соответствующее сообщение.

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



<== предыдущая лекция | следующая лекция ==>
Поиск максимального и минимального элементов | Методические указания по решению задач 10,11,14,19-21


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


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

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

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


 


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

 
 

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

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