U?żywanie break

0

chciałem przeszukiwac tablice dwuwymiarową ale do pierwszej znalezionej litery. wygląda to tak:

for i:=0 to 14 do
for j:=0 to 14 do
  if tempplansza[i,j]='blank' then
  begin
  jakasprocedura(i,j);
  BREAK;
  end;

Z tym że mi ten break nie działa bo wyraźnie procedura działa na każdy znaleziony punkt...
można <font color="white">uŻyć </span> <font color="red">[ort] </span>coś innego niż break?? albo jak ktoś wie to czemu nie działa??

0

Break działa, ale do pierwszej pętli. Aby wyjść z dwóch pętli najprostszym sposobem jest użycie... goto:

for i:=0 to 14 do
for j:=0 to 14 do
  if tempplansza[i,j]='blank' then
  begin
  jakasprocedura(i,j);
  goto Koniec;
  end;
Koniec:

Oczywiście wcześniej musisz zadeklarować etykietę Koniec.

0

zamias Break uzyj Continue (może źle zrozumiałem)

0

faktycznie zapomnialem ze tam sa dwie petle..
dzieki..

0

<font color="green">zamias Break uzyj Continue (może źle zrozumiałem)</span>

Źle zrozumiałeś... Continue wyjdzie tylko z pojedyńczego egzemplarza pętli.. nie można tak zrobić. Rozwiązanie Dryobatesa chyba jest najlepsze... - chociaż jestem przeciwnikiem etykiet (kotwic).

Można też tak:

var
b: boolean
begin

b := False;
for i:=0 to 14 do
begin
if b = True then Break;
for j:=0 to 14 do
  if tempplansza[i,j]='blank' then
  begin
  jakasprocedura(i,j);
  b := True;
  BREAK;
  end;

end;

Omijając etykiety :)
end;

0

można jeszcze tak

procedure SprawdzTablice;
var
 i,j:integer;
begin
for i:=0 to 14 do
for j:=0 to 14 do
  if tempplansza[i,j]='blank' then
  begin
  jakasprocedura(i,j);
  Exit;
  end;
end;
  • przy założeniu, że tempplansza jest tablicą globalną, albo że SprawdzTablice jest procedurą zagnieżdżoną procedury lub funkcji, w której tempplansza jest tablicą lokalną.

Można tez przekazywać tempplansza jako parametr (tablicę otwartą) procedury SprawdzTablice(tempplansza : array of string);

1 użytkowników online, w tym zalogowanych: 0, gości: 1