Объясните, а? Пожалуйста
Дан двумерный массив размером N*M. Сформируйте линейный массив, где каждый элемент равен первому встретившемуся отрицательному элементу соответствующего столбца двумерного массива при просмотре сверху вниз. Если в столбце нет отрицательного числа, то элемент равен 0.
Ответы
Ответ дал:
0
const
n1 = 20;
m1 = 20;
var
a: array[1..n1, 1..m1] of integer;
b: array[1..m1] of integer;
i, j, m, n: integer;
begin
Write('Введите через пробел число строк и столбцов массива: ');
Readln(n, m);
Randomize;
Writeln('Исходный массив');
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := Random(101) - 50;
Write(a[i, j]:4)
end;
Writeln
end;
Writeln('Сформированный массив');
for j := 1 to m do
begin
i := 1;
while (i <= n) and (a[i, j] >= 0) do i := i + 1;
if i <= n then b[j] := a[i, j] else b[j] := -99;
Write(b[j]:4)
end;
Writeln
end.
Тестовое решение:
Введите через пробел число строк и столбцов массива: 3 10
Исходный массив
-11 -18 -42 -22 -9 2 21 15 40 -3
4 -5 40 -13 -44 -37 43 47 1 -39
20 50 21 -18 -10 6 12 -10 43 -37
Сформированный массив
-11 -18 -42 -22 -9 -37 -99 -10 -99 -3
n1 = 20;
m1 = 20;
var
a: array[1..n1, 1..m1] of integer;
b: array[1..m1] of integer;
i, j, m, n: integer;
begin
Write('Введите через пробел число строк и столбцов массива: ');
Readln(n, m);
Randomize;
Writeln('Исходный массив');
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := Random(101) - 50;
Write(a[i, j]:4)
end;
Writeln
end;
Writeln('Сформированный массив');
for j := 1 to m do
begin
i := 1;
while (i <= n) and (a[i, j] >= 0) do i := i + 1;
if i <= n then b[j] := a[i, j] else b[j] := -99;
Write(b[j]:4)
end;
Writeln
end.
Тестовое решение:
Введите через пробел число строк и столбцов массива: 3 10
Исходный массив
-11 -18 -42 -22 -9 2 21 15 40 -3
4 -5 40 -13 -44 -37 43 47 1 -39
20 50 21 -18 -10 6 12 -10 43 -37
Сформированный массив
-11 -18 -42 -22 -9 -37 -99 -10 -99 -3
Вас заинтересует
1 год назад
1 год назад
6 лет назад
6 лет назад
9 лет назад
9 лет назад