// PascalABC.NET 3.3, сборка 1625 от 17.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var (n,m):=ReadInteger2('Количество строк и столбцов в матрице:'); Writeln('*** Исходная матрица ***'); var a:=MatrRandom(n,m,-10,99); a.Println(4); Writeln(4*a.ColCount*'-'); var L:=new List<integer>; // для номеров подходящих строк for var i:=0 to n-1 do if a.Row(i).Any(t->t<=0) then L.Add(i); n:=L.Count; if n=0 then begin Writeln('Все строки содержат только положительные элементы'); exit end; var b:=new integer[n,m]; for var i:=0 to n-1 do b.SetRow(i,a.Row(L[i])); Writeln('*** Результирующая матрица ***'); b.Println(4) end.
Замечание надеемся, что вы еще не забыли о позиционном принципе записи чисел в любых системах счисления (значение цифр, количество которых ограничено, зависит от положения в числе, от ее позиции).в данный момент мы делаем шаг в сторону абстрагирования от конкретных значений цифр и начинаем считать только количество знакомест (позиций), которое в принято называть "разрядом", а совокупность разрядов (знакомест) — "разрядностью". определение разряд в арифметике — это место, занимаемое цифрой при записи числа. например, в десятичной системе счисления цифры первого разряда — это единицы, второго разряда — десятки и т. д. но арифметические законы, которые кажутся привычными в десятичной системе счисления, все без исключения действительны и для двоичной системы счисления. двоичные числа также можно складывать, вычитать, перемножать и делить с использованием тех же приемов школьного курса арифметики. отличие заключается только в том, что используются всего две цифры. кроме того, как мы уже выяснили, в двоичной системе счисления каждый разряд — это бит и его значение зависит от позиции и равно соответствующей степени числа "2". определение разрядность двоичного числа — это количество знакомест (разрядов) или количество битов, заранее отведенных для записи числа. пример десятичное число "2" может быть записано различными способами в зависимости от разрядности двоичного числа: как "10", если разрядность равна двум; как "0010", если разрядность равна четырем; как "00000010", если разрядность равна восьми. обратите внимание, что последний вариант соответствует записи десятичного числа "2" в пределах одного байта информации. разрядность двоичного числа интересует нас в связи с тем, что это количество разрядов (позиций или знакомест) обеспечивает определенный набор возможных двоичных чисел, которые, как мы уже договорились, могут служить , с которых происходит кодирование любых видов информации: собственно чисел, текстов, графических и цветных изображений, звуков, анимации и видео. осталось только выяснить, каким образом разрядность влияет на количество информации (двоичных кодов), котоую можно получить с определенного количества разрядов. однако прежде следует учесть одну особенность двоичных чисел, нашедшую применение в компьютерных технологиях, — это фиксированные значения разрядности двоичных чисел.
// Внимание! Если программа не работает, обновите версию!
begin
var (n,m):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(n,m,-10,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var L:=new List<integer>; // для номеров подходящих строк
for var i:=0 to n-1 do
if a.Row(i).Any(t->t<=0) then L.Add(i);
n:=L.Count;
if n=0 then begin
Writeln('Все строки содержат только положительные элементы');
exit
end;
var b:=new integer[n,m];
for var i:=0 to n-1 do
b.SetRow(i,a.Row(L[i]));
Writeln('*** Результирующая матрица ***');
b.Println(4)
end.
Пример
Количество строк и столбцов в матрице: 5 4
*** Исходная матрица ***
12 -9 64 34
53 64 49 74
33 27 -6 72
91 14 23 16
15 64 9 77
----------------
*** Результирующая матрица ***
12 -9 64 34
33 27 -6 72