Двумерные массивы. Используя булеву функцию определить, состоит ли массив только из положительных или нулевых элементов

Liona

Добрый день) Помогите, пожалуйста, решить задачи) 3.Используя функцию булева типа определить: Состоит ли массив только из положительных или нулевых элементов. Эту задачу решила, но думаю ошибок много:
procedure TForm1.Button1Click(Sender: TObject);
var a:array[1..5,1..5] of integer;
    i,j:integer; b: boolean;
begin
b:=false;
randomize;
for i:=1 to 5 do
for j:=1 to 5 do
a[i,j]:=random(5);
for i:=1 to 5 do
for j:=1 to 5 do
StringGrid1.Cells[i-1,j-1]:=IntToStr(a[i,j]);
for i:=1 to 5 do
for j:=1 to 5 do
begin
if a[i,j]>0 then b:=true;
end;
for i:=1 to 5 do
for j:=1 to 5 do
begin
if a[i,j]=0 then b:=true;
end;
if b=true then showmessage('правда');
if b=false then showmessage('ложь');
end;
end.
4 ответа

Liona

Liona, молодец. Однако Ваша программа определяет, есть ли в массиве положительные или нулевые элементы. Ещё генерация случайного числа у Вас происходит в диапазоне 0..4, а это не айс и не комильфо. И очень плохо, хоть и допустимо, писать "if b = true then", b и без того булева, лучше писать "if b then", или, если нужно проверить на "false", то "if not(b) then"... И с индексами попроще надо как-то... Вот, сократил и подрихтовал малость...
procedure TForm1.Button1Click(Sender: TObject);
var a: array [0..4, 0..4] of integer;
    i, j: integer; 
    b: boolean;
begin
  b := true;
  randomize;
  for i := 0 to 4 do
    for j := 0 to 4 do
      begin
        a[i, j] := random(11) - 5;
        StringGrid1.Cells[i, j] := IntToStr(a[i, j]);
        if a[i, j] < 0 then b := false
      end;
  if b then showmessage('правда')
       else showmessage('ложь')
end;
И ещё можно обойтись без массива a[i, j]. StringGrid1.Cells[i, j] и есть массив.Ещё, ввиду того, что random формирует равномерное распределение чисел, целевое условие почти никогда выполняться не будет. Наверное, надо random(12) - 2, например.


Liona

Cyborg Drone, спасибо большое)) А не подскажете, как можно ответ в edit вывести? У самой, увы, не вышло( Единственное, что в голову пришло, это showmessage.


Liona

Да ладно! Быть того не может!
if b then Edit1.Text := 'правда'
     else Edit1.Text := 'ложь'


Liona

Эх, вот ведь... как заклинет, всё пыталась туда b вывести) Спасибо большое)))