Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Программа

Читайте также:
  1. Программа.

BEGIN

Begin

Begin

Begin

Var

Type

Обработка элементов, удовлетворяющих условию

Вывод элементов массива

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

For i:=1 to d do {для каждого элемента массива}

Write(x[i]:7:2); {выполнить вывод}

Если в процедуре вместо функции write использовать writeln, то будет происходить вывод в столбик.

 

Пример 1. Дан массив натуральных чисел А(N), значения которых лежат в диапазоне [100,500). Найти количество элементов массива, которые являются простыми числами.

Решение. При написании подобных алгоритмов необходимо для каждого элемента массива (for i:=1 to k do…) выполнить проверку на соответствие условию. По итогу проверки изменяется или не изменяется значение количества.

В программе создадим процедуры для ввода и для вывода, а также функцию проверки натурального числа на простоту.

Program massiv1;

const n=100; {максимальное число элементов массива}

vector = ARRAY [1..N] of integer;

a:vector;

K, kol: integer; {К – текущая длина массива}

{------- Процедура ввода VVOD --------}

Procedure VVOD (var x:vector; d:integer; a,b:real);

Vari:integer;

randomize;

For i:=1 to d do{для каждого элемента массива}

x[i]:= a + random(b-a); {получить значение}

End;

{------- Процедура вывода VIVOD ------}

Procedure VIVOD (x:vector; d:integer);

Vari:integer;

For i:=1 to d do {для каждого элемента массива}

Write(x[i]:7:2); {выполнить вывод}

End;

{------- Функция проверки натурального числа на простоту ------}

function prost(a:integer):Boolean;

var d:integer;

prost:=true;

for d:=2 to a div 2 do

if a mod d = 0 then prost:=false;

end;

Write(‘Введите текущую длину массива ‘); readln(k);

Vvod(a,k,100,500);

kol:=0;

for i:=1 to k do {для каждого элемента массива}

if prost(a[i]) then kol:=kol+1;

vivod(a,k);{вывод массива для визуальной проверки правильности работы}

writeln(‘Простых чисел ‘,kol);

END.

Ошибка «выход за границы массива»

На примере 1 рассмотрим самую распространенную ошибку при написании программ работы с массивами. Что произойдет в программе, если ввести K>N? Очевидно, что при работе циклов ввода массива и обработки при значении i=N+1 и далее до i=K будет происходить обращение к несуществующим элементам массива. Эта ошибка называется «выход за границы массива» (range check error). В среде Turbo Pascal заданы такие установки по умолчанию, что возникновение данной ошибки не отслеживается, поэтому программа может доработать до конца, но полученный результат может быть неверным. Для активизации проверки выхода за границы массива необходимо задать компилятору соответствующую опцию. Для этого служит пункт меню Options, команда Compiler, флажок Range checking. Устанавливать эту опцию в обязательном порядке!

Пример 2. Дан массив натуральных чисел А(N). Найти позицию последнего отрицательного элемента массива.

Решение. Можно организовать проход по массиву от начала к концу и последовательно запоминать номера отрицательных элементов в переменной z. Тогда после завершения этого прохода в z останется номер самого последнего отрицательного элемента. Если перед проходом присвоить переменной z значение несуществующего номера (0 или отрицательное значение, или больше максимального), то сохранение этого значения после просмотра всего массива будет признаком того, что отрицательных элементов в нем нет.

Program massiv2;

const n=100; {максимальное число элементов массива}


<== предыдущая страница | следующая страница ==>
Ввод с помощью датчика псевдослучайных чисел | Программа. Фрагмент программы, реализующий сдвиг и вставку

Дата добавления: 2014-03-11; просмотров: 358; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.003 сек.