Из текста задания непонятно, нужен ли промежуточный вывод, поэтому он присутствует после каждого этапа, чтобы убедиться в правильности работы программы. Программа написана и отлажена в среде PascalABC.Net.
const n = 4; var a:array[1..n,1..n] of integer; i,j,s,amin,jmin,amax,imax: integer;
begin { инициализация массива } Writeln('Исходный массив'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(51)-25; { случайные числа на [-25;25] } Write(a[i,j]:4) end; Writeln end; { сумма элементов побочной диагонали } s:=0; for i:=1 to n do s:=s+a[n-i+1,i]; Writeln('Сумма элементов побочной диагонали: ',s); Writeln('Меняем местами первый и последний столбцы'); for i:=1 to n do begin s:=a[i,1]; a[i,1]:=a[i,n]; a[i,n]:=s end; { вывод } for i:=1 to n do begin for j:=1 to n do Write(a[i,j]:4); Writeln end; { меняем местами минимальный элемент первой строки и максимальный элемент последнего столбца } amin:=a[1,1]; jmin:=1; for j:=2 to n do if amin>a[1,j] then begin amin:=a[1,j]; jmin:=j end; amax:=a[1,n]; imax:=1; for i:=2 to n do if amax<a[i,n] then begin amax:=a[i,n]; imax:=i end; a[1,jmin]:=amax; a[imax,n]:=amin; Writeln('Массив после обмена местами найденных элементов'); for i:=1 to n do begin for j:=1 to n do Write(a[i,j]:4); Writeln end end.
Тестовое решение: Исходный массив -14 -25 -14 -11 8 -5 5 0 5 20 -7 -9 -23 4 -3 18 Сумма элементов побочной диагонали: -9 Меняем местами первый и последний столбцы -11 -25 -14 -14 0 -5 5 8 -9 20 -7 5 18 4 -3 -23 Массив после обмена местами найденных элементов -11 8 -14 -14 0 -5 5 -25 -9 20 -7 5 18 4 -3 -23
var n,k:integer; s: string; begin writteln('введите n,k'); readln(n,k); str(n,s);{преобразуем число n в строку s} witeln(s[length(s)-k+1]); {length(s) -длина строки} end.
{2 задача} cons nmax=20; var a:array [1..nmax] of integer; min1,min2,i,k1,k2,N:integer; begin writeln('введите кол-во элементов массива'); readln(N); writeln('введите элементы массива'); for i:=1 to N do read(a[i]); min1:=a[1]; k1:=1; {k1 -индекс первого минимального элемента} for i:=2 to n do if min1>a[i] then begin min1:=a[i]; k1:=i end; {исключаем найденный минимальный элемент из массива- можно и по другому} for i:=k1+1 to N do a[i-1]:=a[i]; k1:=n-1; end; min2:=a[1]; k2:=1; {k1 -индекс первого минимального элемента} for i:=2 to n do if min2>a[i] then begin min2:=a[i]; k2:=i end; writeln(min1:5,min2:5) {если нужно было сохранить массив в начале программы надо ввести дополнительный массив }
Программа написана и отлажена в среде PascalABC.Net.
const
n = 4;
var
a:array[1..n,1..n] of integer;
i,j,s,amin,jmin,amax,imax: integer;
begin
{ инициализация массива }
Writeln('Исходный массив');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=Random(51)-25; { случайные числа на [-25;25] }
Write(a[i,j]:4)
end;
Writeln
end;
{ сумма элементов побочной диагонали }
s:=0;
for i:=1 to n do s:=s+a[n-i+1,i];
Writeln('Сумма элементов побочной диагонали: ',s);
Writeln('Меняем местами первый и последний столбцы');
for i:=1 to n do
begin s:=a[i,1]; a[i,1]:=a[i,n]; a[i,n]:=s end;
{ вывод }
for i:=1 to n do
begin
for j:=1 to n do Write(a[i,j]:4);
Writeln
end;
{ меняем местами минимальный элемент первой строки
и максимальный элемент последнего столбца }
amin:=a[1,1]; jmin:=1;
for j:=2 to n do
if amin>a[1,j] then begin amin:=a[1,j]; jmin:=j end;
amax:=a[1,n]; imax:=1;
for i:=2 to n do
if amax<a[i,n] then begin amax:=a[i,n]; imax:=i end;
a[1,jmin]:=amax; a[imax,n]:=amin;
Writeln('Массив после обмена местами найденных элементов');
for i:=1 to n do
begin
for j:=1 to n do Write(a[i,j]:4);
Writeln
end
end.
Тестовое решение:
Исходный массив
-14 -25 -14 -11
8 -5 5 0
5 20 -7 -9
-23 4 -3 18
Сумма элементов побочной диагонали: -9
Меняем местами первый и последний столбцы
-11 -25 -14 -14
0 -5 5 8
-9 20 -7 5
18 4 -3 -23
Массив после обмена местами найденных элементов
-11 8 -14 -14
0 -5 5 -25
-9 20 -7 5
18 4 -3 -23
s: string;
begin
writteln('введите n,k');
readln(n,k);
str(n,s);{преобразуем число n в строку s}
witeln(s[length(s)-k+1]); {length(s) -длина строки}
end.
{2 задача}
cons nmax=20;
var a:array [1..nmax] of integer;
min1,min2,i,k1,k2,N:integer;
begin
writeln('введите кол-во элементов массива');
readln(N);
writeln('введите элементы массива');
for i:=1 to N do read(a[i]);
min1:=a[1]; k1:=1; {k1 -индекс первого минимального элемента}
for i:=2 to n do
if min1>a[i] then
begin
min1:=a[i];
k1:=i
end;
{исключаем найденный минимальный элемент из массива- можно и по другому}
for i:=k1+1 to N do
a[i-1]:=a[i];
k1:=n-1;
end;
min2:=a[1]; k2:=1; {k1 -индекс первого минимального элемента}
for i:=2 to n do
if min2>a[i] then
begin
min2:=a[i];
k2:=i
end;
writeln(min1:5,min2:5)
{если нужно было сохранить массив в начале программы надо ввести дополнительный массив }
end.