Объединить массивы А и В так, чтобы сначала располагались неотрицательные элементы в порядке убывания, затем отрицательные элементы массива А, затем отрицательные элементы массива В, порядок следования среди которых надо изменить на противоположный — Pascal(Паскаль)

uses crt;
const nmax=100;
type mas=array[1..nmax] of integer;
procedure Vvod(var v:mas;var x:byte;c:char);
var i:byte;
begin
writeln('Массив ',c);
repeat
write('Размер массива до ',nmax div 2,' =');
readln(x);
until x in [1..nmax div 2];
for i:=1 to x do
 begin
  v[i]:=random(20)-9;
  write(v[i]:3);
 end;
writeln;
writeln;
end;
var a,b,c:mas;
    na,nb,nc,i,j,k:byte;
    x:integer;
begin
clrscr;
randomize;
Vvod(a,na,'A');
Vvod(b,nb,'B');
nc:=0;
{неотрицательные из массива А}
for i:=1 to na do
if a[i]>=0 then
 begin
  inc(nc);
  c[nc]:=a[i];
 end;
{неотрицательные из массива В}
for i:=1 to nb do
 if b[i]>=0 then
 begin
  inc(nc);
  c[nc]:=b[i];
 end;
{сортируем по убыванию}
for i:=1 to nc-1 do
for j:=i+1 to nc do
if c[i]<c[j] then
 begin
  x:=c[i];
  c[i]:=c[j];
  c[j]:=x;
 end;
{отрицательные из массва А в прямом порядке}
for i:=1 to na do
if a[i]<0 then
 begin
  inc(nc);
  c[nc]:=a[i];
 end;
{отрицательные из массва В в обратном порядке}
for i:=nb downto 1 do
if b[i]<0 then
 begin
  inc(nc);
  c[nc]:=b[i];
 end;
writeln('Объединенные массивы:');
for i:=1 to nc do
write(c[i]:3);
readln
end.

Leave a Comment

4 + 6 =