Решить на вставку в массив. несколько тестовых наборов данных для проверки работо программы дан целочисленный линейный массив. вставить число a между всеми соседними элементами, имеющими одинаковый знак.
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.
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк (столбцов) в матрице:'); Writeln('*** Исходная матрица ***'); var a:=MatrRandom(n,n,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var (su,sd,sl):=(0,0,0); for var i:=0 to n-1 do for var j:=0 to n-1 do if i<j then su+=a[i,j] else if i=j then sd+=a[i,j] else sl+=a[i,j]; Writeln('Суммы элементов:'); Writeln(' - верхней треугольной матрицы ',su); Writeln(' - главной диагонали ',sd); Writeln(' - нижней треугольной матрицы ',sl) end.
Пример Количество строк (столбцов) в матрице: 4 *** Исходная матрица *** -73 -89 4 39 77 -32 23 -45 -29 -70 -88 -40 -83 9 21 -46
Суммы элементов: - верхней треугольной матрицы -108 - главной диагонали -239 - нижней треугольной матрицы -75
"Школьный" вариант
const nn=20; { максимальный размер }
var a:array[1..nn,1..nn] of integer; i,j,n:integer; su,sd,sl:longint;
begin Write('Количество строк (столбцов) в матрице:'); Readln(n); Randomize; Writeln('*** Исходная матрица ***'); su:=0; sd:=0; sl:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(199)-99; Write(a[i,j]:4); if i<j then su+=a[i,j] else if i=j then sd+=a[i,j] else sl+=a[i,j] end; Writeln end; Writeln('Суммыа элементов:'); Writeln(' - верхней треугольной матрицы ',su); Writeln(' - главной диагонали ',sd); Writeln(' - нижней треугольной матрицы ',sl) end.
//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