// PascalABC.NET 3.3, сборка 1549 от 17.10.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк/столбцов в матрице:'); Writeln('*** Исходная матрица ***'); var a:array[,] of integer; repeat // обеспечить уникальность элементов a:=MatrRandom(n,n,-999,999) until a.Rows.SelectMany(x->x).Distinct.Count=n*n; a.Println(5); Writeln(5*a.ColCount*'-'); var jmin:=a.ElementsWithIndexes.MinBy(t->t[0])[2]; Writeln(a.Col(jmin).Sum) end.
//PascalABC.NET var b : array of integer; m : integer; begin // Ввод данных var n := ReadInteger('Введите число N всех чисел массива: '); var k := ReadInteger('Введите число К "красивых" чисел: '); writeln('Введите все числа в массиве'); var a := ReadArrInteger(n); // Резервируем место для слагаемых b := new integer[k]; // Просмотрим все данные числа foreach var i in a do // Выберем только кратные трем if i mod 3 = 0 then begin // Если есть свободное место, поместим туда m := b.FindIndex(x -> x=0); if m <> -1 then b[m] := i else // Если свободного места нет, найдем наибольший элемент // и заменим его begin m := b.FindIndex(x -> (x>i) and (x=b.Max)); if m <> -1 then b[m] := i; end; end; // Выведем сумму write('Сумма элементов - ', b.Sum) end.
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк/столбцов в матрице:');
Writeln('*** Исходная матрица ***');
var a:array[,] of integer;
repeat // обеспечить уникальность элементов
a:=MatrRandom(n,n,-999,999)
until a.Rows.SelectMany(x->x).Distinct.Count=n*n;
a.Println(5); Writeln(5*a.ColCount*'-');
var jmin:=a.ElementsWithIndexes.MinBy(t->t[0])[2];
Writeln(a.Col(jmin).Sum)
end.
Пример
Количество строк/столбцов в матрице: 7
*** Исходная матрица ***
666 963 808 847 -383 -453 695
-233 -460 -311 606 -487 -243 -29
479 438 -985 184 499 92 556
-54 819 38 -962 790 -411 -155
-320 525 340 390 76 -617 -747
-439 585 332 -654 495 602 372
551 229 906 837 480 -211 -438
1128
var
b : array of integer;
m : integer;
begin
// Ввод данных
var n := ReadInteger('Введите число N всех чисел массива: ');
var k := ReadInteger('Введите число К "красивых" чисел: ');
writeln('Введите все числа в массиве');
var a := ReadArrInteger(n);
// Резервируем место для слагаемых
b := new integer[k];
// Просмотрим все данные числа
foreach var i in a do
// Выберем только кратные трем
if i mod 3 = 0 then begin
// Если есть свободное место, поместим туда
m := b.FindIndex(x -> x=0);
if m <> -1 then b[m] := i
else
// Если свободного места нет, найдем наибольший элемент
// и заменим его
begin
m := b.FindIndex(x -> (x>i) and (x=b.Max));
if m <> -1 then b[m] := i;
end;
end;
// Выведем сумму
write('Сумма элементов - ', b.Sum)
end.