Описание блоков укрупненной схемы алгоритма

На языке Pascal

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

Используем процедуру вывода writeln (' Введите элементы первого массива: ') и writeln ('Введите элементы второго массива: '), которая позволит прокомментировать очередность вывода исходных мас­сивов.

Сначала выдается подсказка оператором writeln ('Введите элементы первого массива'). Затем каждый очередной элемент массива считывается с экрана оператором readln(al[i]), который вызывается в цикле. Цикл работает до достижения переменной i значения N, то есть до конца массива.

Аналогично, в следующем цикле вводим элементы второго массива оператором readln(a2[i]).

В виде фрагмента программы это запишется следующем образом:

Writeln (' Введите элементы первого массива: ');

for i:=l to n do readln(al [i]);

Writeln ('Введите элементы второго массива:');

for i:=l to n do readln(a2[i]);



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

Обработку массива осуществляем в цикле с предусловием. Перед началом работы цикла его параметру задаем начальное значение, то есть i=l. В условии цикла проверяется сразу два условия: условие зада­чи (al[i]>a2[i]) и значение счетчика цикла (i<=N). Значение счетчика цикла не должно превышать конца массива, иначе программа выдаст ошибку - попытка перейти за пределы массива. Два условия объединя­ются логической операцией «И» (and). Это означает, что цикл будет выполняться только в том случае, когда истинны оба условия. Если одно из условий примет значение «ложь» (false), цикл сразу прекратит свое выполнение.

Так как по условию задачи с элементами массивов никаких действий выполнять не надо, в теле цикла просто увеличиваем значение счетчика на единицу, чтобы перейти к следующему элементу массива (i:=i+l).

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

Реализация данного рода обработки массивов программным способом запишется следующим образом:

While (al[i]>a2[i]) and (i<=n) do i:=i+l;

if i>n then writeln ('Все элементы первого массива больше элементов второго массива')

else writeln ('Элементы первого массива не превосходят элементы второго массива');

Сортировка массива

Следующий цикл реализует алгоритм сортировки массива обменом.

Запись for k:=n downto 1 do означает, что элементы массива будут обрабатываться, столько раз сколько элементов в массиве. Если предыдущий элемент больше следующего (al[i]>al[i+l]), то значения меняются местами. Для перемены местами используется буферная переменная В. Сначала в переменной В сохраняется значение предыдущего элемента массива (B:=al[i]). Затем элементу с этим номером присваивается значение следующего элемента массива (al[i]:=al[i+l]), после чего следующему элементу массива присваивается значение буферной переменной В.

for k:=n downto 1 do

for i:=1 to k-1 do

if al[i]>al[i+l] then begin B:=al[i]; al[i]:=al[i+l]; al[i+l]:=B; end;



Вывод преобразованного массива

После сортировки выводим преобразованный массив на экран стандартными средствами вывода write(al[i], ' ') - вывод элементов массива в строку через пробел.

 

Writeln ('Отсортированный массив:');

for i:=l to n do write(al[i],' ');

Листинг программы

 

Program Massiv;

uses crt;

const N=10;

var al, a2: array[l..n] of integer;

i, k, B: integer;

begin clrscr;

writeln ('Введите элементы первого массива:');

for i:=l to n do read(al[i]);

writeln ('Введите элементы второго массива:');

for i:=l to n do read(a2[i]);

i:=l;

while (al[i]>a2[i]) and (i<=n) do i:=i+l;

if i>n then writeln('Bce элементы первого массива больше элементов второго

                           массива')

else writeln ('Элементы первого массива не превосходят элементы

                   второго массива');

for k:=n downto 1 do

for i:=l to k-1 do

if al[i]>al[i+l] then begin B:=al[i]; al[i]:=al[i+l]; al[i+l]:=B; end;

writeln ('Отсортированный массив:');

for i:=l to n do write(al[i], ' ');

end.

 




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: