Написать программу в pascal . дана целочисленная матрица порядка n на m . cформировать одномерный массив из элементов кратных на 4 последних p строках . p - число введенное на клавиатуре .
// 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.
В общем случае, трассировка - один из отладки программ врукопашную: состояние программы контролируется на определённом отрезке времени её выполнения путём анализа значений переменных. трассировка в том или ином виде при отладке программ сложнее школьного дз практически неизбежна. в простейшем случае, трассировка - вывод значений переменных на экран (например, в окно консоли) , либо расчёт их на бумажке для каждого шага. в более продвинутом варианте используются точки останова, окно наблюдения, выполнение по шагам и, если есть, контекстный интерпретатор выражений. есть также специальная "трассирующая консоль" - интерфейс вывода информации из программы в отладчик, если таковой присутствует. почти любой современный отладчик показывает состояние програмm при её останове, что делает трассировку процессом легко доступным
#define IN 1 //внутри слова #define OUT 0 //вне слова
int main() { string s; getline(cin, s); int state = OUT; //позиция s = ' ' + s + ' '; int k = 0; //позиция начала слова for (int i = 0; i < s.size(); i++) if (s[i] == ' ') { if (state == IN && s[k] == s[i - 1]) cout << s.substr(k, i - k + 1) << endl; state = OUT; } else if (state == OUT) { k = i; state = IN; } return 0; }
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