// PascalABC.NET 3.1, сборка 1218 от 12.04.2016 begin var m,n:integer; Write('Количество строк и столбцов матрицы: '); Read(n,m); var a:=MatrixRandom(n,m,10,99); for var i:=0 to n-1 do begin for var j:=0 to m-1 do Print(a[i,j]); Writeln end; var p:=ReadInteger('Введите число Р:'); var b:array of integer; SetLength(b,4*m); var k:=0; for var i:=n-p to n-1 do for var j:=0 to m-1 do if a[i,j] mod 4=0 then begin b[k]:=a[i,j]; Inc(k) end; SetLength(b,k); b.Print end.
Сначала надо избавиться от ошибок (пункт №3) иначе не сможем выполнить 1 и 2 пункт задания. Исправляем if N mod 10 k:=N mod 10; на if (N mod 10 < k) then k:=N mod 10; Исправляем N:N div 10; на N:= N div 10;
После исправления ошибок при вводе 537 получим 3 Программа будет работать правильно для любого числа, у которого вторая цифра слева меньше первой цифры, например: 7193
Чтобы программа работала правильно для всех чисел надо изменить это: while N > 10 do на while N > 0 do
После всех исправлений код программы стал таким: var N, k: integer; begin readln(N); k := 9; while N > 10 do begin if (N mod 10 < k) then k := N mod 10; N := N div 10; end; write(k) end.
begin
var m,n:integer;
Write('Количество строк и столбцов матрицы: ');
Read(n,m);
var a:=MatrixRandom(n,m,10,99);
for var i:=0 to n-1 do begin
for var j:=0 to m-1 do Print(a[i,j]);
Writeln
end;
var p:=ReadInteger('Введите число Р:');
var b:array of integer;
SetLength(b,4*m);
var k:=0;
for var i:=n-p to n-1 do
for var j:=0 to m-1 do
if a[i,j] mod 4=0 then begin
b[k]:=a[i,j]; Inc(k)
end;
SetLength(b,k);
b.Print
end.
Тестовое решение:
Количество строк и столбцов матрицы: 6 8
67 70 68 72 38 72 96 38
49 75 24 55 72 63 21 40
72 12 60 22 74 30 13 45
22 45 39 24 35 97 64 31
76 62 15 94 56 28 31 13
41 67 75 37 67 13 25 20
Введите число Р: 4
72 12 60 24 64 76 56 28 20