Помощь - Поиск - Пользователи - Календарь
Полная версия: 2_мерный и одномерный массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Insomnia
const n=15; m=20;
var A: array[1..m,1..n] of integer; b: array[1..m] of boolean;
По массиву А получить массив b, присвоив его k-тому элементу значение true, если все элементы k-того столбца массива А нулевые, и значение false иначе.


var
A: array[1..m,1..n] of integer;
b: array[1..m] of boolean;
l,i,j:integer;
k:boolean;
begin
writeln('vvedite k');
readln(k);
writeln('vvedite massiv');
for i:=1 to m do
for j:=1 to n do
readln(A[i,j]);
for i:=1 to m do
for j:=1 to n do
begin
m:=m+1;
b[m]:=A[i,j];
end;
for i:=1 to m do
for j:=1 to n do
if
end.


мне непонятны операции с k . как посчитать к-столбец?
Lapp
Вот так:
const
m=20;
n=15;
var
A: array[1..m,1..n] of integer;
b: array[1..m] of boolean;
i,j:integer;
begin
writeln('vvedite massiv');
for i:=1 to m do
for j:=1 to n do
//readln(A[i,j]);
a[i,j]:= Random(Random(Random(2)+1)+1)*Random(10);
for i:=1 to m do begin
for j:=1 to n do Write(a[i,j]:3);
WriteLn
end;
for i:=1 to m do begin
b[i]:=true;
for j:=1 to n do b[i]:=b[i] and (a[i,j]=0)
end;
for i:=1 to m do Write(b[i]:6);
ReadLn
end.
Insomnia
a[i,j]:= Random(Random(Random(2)+1)+1)*Random(10); - поясните пожалуйста, каким образом получается генерация массива таким выражением?

for j:=1 to n do b[i]:=b[i] and (a[i,j]=0) - вот эти действия в цикле мне непонятны..
Lapp
Цитата(Insomnia @ 27.12.2010 16:12) *

a[i,j]:= Random(Random(Random(2)+1)+1)*Random(10); - поясните пожалуйста, каким образом получается генерация массива таким выражением?
Если заполнять просто случайными числами (даже если Random(2)), то слишком мала вероятность, что хотя бы один столбец будет полностью нулевым. Поэтому я и сделал Random(Random(Random(2)+1)+1). А множитель сзади приделал для красоты - чтоб не только едининицы были кроме нулей smile.gif. Попробуй раскрутить эту конструкцию назад и наблюдай за изменениями.

Цитата
for j:=1 to n do b[i]:=b[i] and (a[i,j]=0) - вот эти действия в цикле мне непонятны..
Это и есть главная часть. Тут происходит проверка на то, что все числа в столбце равны 0. Полагаю b[i] равным TRUE (предыдущий оператор - кстати, не надо было его опускать при цитировании), и потом прохожу по всем элементам столбца. Если хоть один ненулевой - b[i] сбрасывается в FALSE.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.