<em>// PascalABC.NET 3.2, сборка 1362 от 14.12.2016</em>
<em>// Внимание! В других версиях языка работа не гарантируется!</em>
begin
var m:=ReadInteger('Количество строк в массиве:');
var n:=ReadInteger('Количество столбцов в массиве:');
Writeln('*** Исходный массив A[',m,',',n,'] ***');
var a:=MatrRandom(m,n,-50,50);
a.Println(4);
Writeln(4*a.ColCount*'-');
var k:=a.Rows.Select(x->x.Aggregate(0,(x,y)->x+y)).ToArray.IndexMax;
for var j:=0 to (n-1) div 2 do Swap(a[k,j],a[k,n-1-j]);
a.Println(4)
end.
<u>Пример</u>
Количество строк в массиве: 4
Количество столбцов в массиве: 5
*** Исходный массив A[4,5] ***
29 36 -50 -4 -32
-1 -10 -7 -47 -50
-16 4 48 -41 -43
8 46 45 14 -44
--------------------
29 36 -50 -4 -32
-1 -10 -7 -47 -50
-16 4 48 -41 -43
-44 14 45 46 8
<em>MS DOS QBasic 1.0</em>
DIM n AS INTEGER, m AS INTEGER
CLS
INPUT "n,m=", n, m
IF n < 3 THEN
PRINT "n<3"
SYSTEM
END IF
REDIM a(1 TO n, 1 TO m) AS INTEGER
RANDOMIZE TIMER
FOR i = 1 TO n
FOR j = 1 TO m
a(i, j) = INT(50 * RND)
PRINT USING "###"; a(i, j);
NEXT j
PRINT
NEXT i
PRINT
FOR i = 4 TO n
FOR j = 1 TO m
a(i - 1, j) = a(i, j)
NEXT j
NEXT i
FOR i = 1 TO n - 1
FOR j = 1 TO m
PRINT USING "###"; a(i, j);
NEXT j
PRINT
NEXT i
<u>Пример
</u>n,m=5,8
43 6 19 48 44 6 28 10
5 48 44 1 31 30 25 33
19 30 46 27 29 34 45 8
17 37 43 1 37 46 25 45
48 48 27 21 36 48 44 37
43 6 19 48 44 6 28 10
5 48 44 1 31 30 25 33
17 37 43 1 37 46 25 45
48 48 27 21 36 48 44 37
<u>Замечание</u>
Поскольку QBasic не поддерживает сохранение содержимого при изменении размеров динамического массива, для упрощения было решено не заниматься созданием вспомогательного массива, копирования в него всех строк, кроме последней, затем изменение размера исходного массива и обратное копирование в него. Просто считается, что n уменьшилось на 1.
ответ 36 кбайт
я тебе в комментах в прошлом вопросе скинул
Инверсии не вижу, поэтому так: 1. конъюнкция; 2. импликация; 3. Объединяешь решения.