На языке Pascal
Ввод элементов одномерных массивов
Используем процедуру вывода writeln (' Введите элементы первого массива: ') и writeln ('Введите элементы второго массива: '), которая позволит прокомментировать очередность вывода исходных массивов.
Сначала выдается подсказка оператором writeln ('Введите элементы первого массива'). Затем каждый очередной элемент массива считывается с экрана оператором readln (al [ i ]), который вызывается в цикле. Цикл работает до достижения переменной i значения N, то есть до конца массива.
Аналогично, в следующем цикле вводим элементы второго массива оператором readln (a 2[ 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 ]> a 2[ 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 down to 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.
Тестирование программы
Ниже приведены результаты выполнения программы на примере различных входных данных.
Приложение 3
ОБРАЗЕЦ РЕШЕНИЯ ЗАДАЧИ