Дано: n, a[1:n]
Результат: a’[1:n] или сообщение «нет четных элементов» или сообщение «нет нечетных элементов»
При : n Є N, n≤ Lmax (Lmax здесь и далее - максимальная длина массива)
Связь: b=a[nch], a[nch]=a[nnech], a[nnech]=b,
где nch – номер минимального четного элемента массива,
nnech – номер максимального нечетного элемента массива.
Алг «обмен»
Нач
ввод(n, a[1:n])
{инициализации}
min:=maxint
nch:=0
max:=-maxint
nnech:=0
циклот i:=1 до n
если a[i] – четное то
если a[i] <=min то
min:=a[i]
nch:=i
все
иначе
если a[i] >=max то
max:=a[i]
nnech:=i
все
все
кц
если nсh=0 то
вывод(«нет четных элементов»)
иначе
если nnech=0 то
вывод(«нет нечетных элементов»)
иначе
b:=a[nch]
a[nch]:=a[nnech]
a[nnech]:=b
вывод(a[1:n])
все
все
кон
program kr;
var a:array[1..20] of integer;
i,n,min,max,nch,nnech,b:integer;
begin
write('введите n'); read(n);
write('введите');
for i:=1 to n do read(a[i]);
{инициализация}
min:=maxint;
nch:=0;
max:=-maxint-1;
nnech:=0;
for i:=1 to n do
if not odd( a[i] ) then
begin
if a[i] <=min then
begin
min:=a[i];
nch:=i;
end
end
else
if a[i] >=max then
begin
max:=a[i];
nnech:=i
end;
if nch=0 then
writeln('нет четных')
else
if nnech=0 then
writeln('нет нечетных')
else
begin
b:=a[nch];
a[nch]:=a[nnech];
a[nnech]:=b;
writeln('массив после перестановки');
for i:=1 to n do writeln(a[i]);
end;
end.
Задача 2.Дан массив B[1:n]. Сформировать два новых массива: первый содержит отрицательные элементы, а второй – четные. Написать постановку задачи, алгоритм и программу.
Решение.