Первое что на клаву пришло, может подойдёт
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
t: array [1..23] of array [1..40] of byte;
i, j: byte;
s: string;
begin
Randomize;
// для проверки случайное заполнение массива
for i := 1 to 23 do
for j := 1 to 40 do t[i,j]:= Random(2);
memo1.Clear;
for i := 1 to 23 do
begin
s:= '';
for j := 1 to 40 do s:= s + IntToStr(t[i, j]) + ' ';
Memo1.Lines.Add(s);
end;
s:='';
Memo1.Lines.Add('');
for j := 1 to 40 do if t[1, j] = 0 then s:= s + IntToStr(j) + ' ';
Memo1.Lines.Add('Свободные места:');
Memo1.Lines.Add('');
Memo1.Lines.Add(s);
end;
На форму бросьте кнопку и мемо