Массив a(6х8), найти сумму положительных элементов и вычесть произведение максимума и минимума (максимум и минимум искать по модулю). на паскале, как можно проще =*
Const n=6; m=8; var a:array[1..n,1..m] of integer; i,j,max,min,s:integer; begin Randomize; writeln('Исходный массив:'); for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(51)-25; write(a[i,j]:4); end; writeln; end; max:=abs(a[1,1]); min:=abs(a[1,1]); s:=0; for i:=1 to n do for j:=1 to m do begin if a[i,j]>0 then s:=s+a[i,j]; if abs(a[i,j])>max then max:=abs(a[i,j]); if abs(a[i,j])<min then min:=abs(a[i,j]); end; writeln('s = ',s,' max = ',max,' min = ',min); writeln('s - max * min = ',s-max*min); end.
Для того, чтобы нумерация строк в таблице выполнялась автоматически, следует выполнить несколько простых действий: 1. Выделяем ячейки, в которых нам необходима нумерация, в блок.
2. Переходим на ленту меню Главная, в область Абзац. 3. Выбираем создание нумерованного списка (1. 2. 3. …) при кнопки Нумерация 
4. Получаем таблицу со столбцом, в котором нумерация строк будет выполняться автоматически при удалении или добавлении строк в таблицу.
Можно сказать, что мы превратили столбец № п/п в обыкновенный нумерованый список, который будет автоматически расширяться или уменьшаться по количеству строк в таблице. При этом нумерация строк будет выполняться автоматически.
PascalABC.NET 3.3.5, сборка 1660 от 20.04.2018 Внимание! Если программа не работает, обновите версию!
procedure Preobraz(var Stroka:string); begin var bq:=new Queue<(integer,integer)>; foreach var m in Stroka.Matches('\s+') do bq.Enqueue((m.Index,m.Length)); var wq:=new Queue<(integer,string)>; foreach var m in Stroka.Matches('\S+') do if m.Value.Any(t->t in ['0'..'9']) then wq.Enqueue((m.Index,'')) else wq.Enqueue((m.Index,m.Value)); Stroka:=''; var pbi,pwi:integer; while (bq.Count>0) and (wq.Count>0) do begin (pbi,pwi):=(bq.Peek[0],wq.Peek[0]); if pbi<pwi then begin Stroka:=Stroka+bq.Peek[1]*' '; bq.Dequeue end else begin Stroka:=Stroka+wq.Peek[1]; wq.Dequeue end end; while bq.Count>0 do begin Stroka:=Stroka+bq.Peek[1]*' '; bq.Dequeue end; while wq.Count>0 do begin Stroka:=Stroka+wq.Peek[1]; wq.Dequeue end end;
begin var s:=ReadlnString; Preobraz(s); s:='<'+s+'>'; // чтобы было видно, как работает s.Println end.
var
a:array[1..n,1..m] of integer;
i,j,max,min,s:integer;
begin
Randomize;
writeln('Исходный массив:');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(51)-25;
write(a[i,j]:4);
end;
writeln;
end;
max:=abs(a[1,1]); min:=abs(a[1,1]); s:=0;
for i:=1 to n do
for j:=1 to m do
begin
if a[i,j]>0 then s:=s+a[i,j];
if abs(a[i,j])>max then max:=abs(a[i,j]);
if abs(a[i,j])<min then min:=abs(a[i,j]);
end;
writeln('s = ',s,' max = ',max,' min = ',min);
writeln('s - max * min = ',s-max*min);
end.
Пример:
Исходный массив:
-10 4 9 -21 9 24 24 -24
-23 -21 21 24 -18 -15 14 -8
2 -23 -17 5 17 -8 -10 -16
-22 -9 6 -21 3 -13 18 13
-8 -3 -25 -6 -2 8 14 25
-19 -10 22 -1 -6 -20 -5 -17
s = 262 max = 25 min = 1
s - max * min = 237