Кто шарит в проге, это не школьный курс, , дан массив ненулевых целых чисел из n элементов. используя рекурсию, напечатать сначала все отрицательные, а потом – все положительные числа этой последовательности. реализовать в одной функции, которая вызывается один раз.
mas = array[1..11] of integer;
procedure p(a: mas; k: integer);
var t: integer;
begin
if a[k] <> 0 then
begin
t := a[k];
if a[k] < 0 then writeln(a[k]);
p(a, k + 1);
end
else t := -1;
if t > 0 then writeln(t);
end;
var
n, i: integer;
a: mas;
begin
randomize;
write('Размер последовательности от 2 до 10 n= ');
readln(n);
writeln('Последовательность');
for i := 1 to n do
begin
repeat
a[i] := -10 + random(21);
until a[i] <> 0;
write(a[i]:4);
end;
writeln;
a[n + 1] := 0;
writeln('Преобразованная последовательность');
p(a, 1);
end.
type
mas = array[1..n] of integer;
procedure p(a: mas; k: integer);
begin
if k <= n then
begin
if a[k] < 0 then write(a[k]:4);
p(a, k+1);
if a[n-k+1] > 0 then write(a[n-k+1]:4);
end
end;
var
a: mas; i: integer;
begin
randomize;
writeln('Последовательность');
for i := 1 to n do
begin
a[i] := random(21)+1;
if random(2)=1 then a[i]:=-a[i];
write(a[i]:4);
end;
writeln;
writeln('Преобразованная последовательность');
p(a, 1);
end.
Пример:
Последовательность
20 8 -9 15 -1 16 -9 -12 7 2
Преобразованная последовательность
-9 -1 -9 -12 20 8 15 16 7 2