Предмет: Информатика,
автор: marimaryaniki
Помогите пожалуйста!!!!
Решить задачу на вставку в массив. Привести несколько тестовых наборов данных для проверки работоспособности программы
Дан целочисленный линейный массив. Вставить число a между всеми соседними элементами, имеющими одинаковый знак.
Ответы
Автор ответа:
0
//Не самое изящное решение
//Pascal ABC.NET 3.1
Const
n=5;
Var ar:array[1..2*n] of integer;
j,a,k,i,t:integer;
begin
write('A:');
readln(a);
writeln('Array:');
for i:=1 to n do
readln(ar[i]);
j:=1;
k:=n;
while j<>k do
begin
if ((ar[j]>=0) and (ar[j+1]>=0)) or ((ar[j]<=0) and (ar[j+1]<=0)) then
begin
t:=ar[k];
for i:=k-1 downto j do
ar[i+1]:=ar[i];
ar[j+1]:=a;
inc(k);
j:=j+2;
ar[k]:=t;
end
else
inc(j);
end;
writeln('Final array:');
for i:=1 to k do write(ar[i]:4);
end.
Пример ввода 1:
6
1
2
3
4
5
Пример вывода 1:
1 6 2 6 3 6 4 6 5
Пример ввода 2:
6
-1
2
-3
4
-5
Пример вывода 2:
-1 2 -3 4 -5
Пример ввода 3:
6
1
2
-3
4
5
Пример вывода 3:
1 6 2 -3 4 6 5
//Pascal ABC.NET 3.1
Const
n=5;
Var ar:array[1..2*n] of integer;
j,a,k,i,t:integer;
begin
write('A:');
readln(a);
writeln('Array:');
for i:=1 to n do
readln(ar[i]);
j:=1;
k:=n;
while j<>k do
begin
if ((ar[j]>=0) and (ar[j+1]>=0)) or ((ar[j]<=0) and (ar[j+1]<=0)) then
begin
t:=ar[k];
for i:=k-1 downto j do
ar[i+1]:=ar[i];
ar[j+1]:=a;
inc(k);
j:=j+2;
ar[k]:=t;
end
else
inc(j);
end;
writeln('Final array:');
for i:=1 to k do write(ar[i]:4);
end.
Пример ввода 1:
6
1
2
3
4
5
Пример вывода 1:
1 6 2 6 3 6 4 6 5
Пример ввода 2:
6
-1
2
-3
4
-5
Пример вывода 2:
-1 2 -3 4 -5
Пример ввода 3:
6
1
2
-3
4
5
Пример вывода 3:
1 6 2 -3 4 6 5
Похожие вопросы
Предмет: Биология,
автор: avokadik53
Предмет: История,
автор: patrulgavno123
Предмет: Математика,
автор: sdenisen815
Предмет: Математика,
автор: veronika79an
Предмет: Литература,
автор: alihan120443