Iterowanie tablic wielowymiarowych

Odpowiedz Nowy wątek
2011-08-25 12:03
0

Mógłby mi ktoś zaprezentować prosty przykład iterowania tablicy dwuwymiarowej za pomoca pętli for?

Mam kłopot z określeniem liczby powtórzeń

Pozostało 580 znaków

2011-08-25 12:40
1

http://peb.pl/programowanie/1[...]enie-i-sumowanie-tablicy.html


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2011-08-25 13:02
ŁF
2

length() albo low() i high()


Pozostało 580 znaków

2011-08-25 20:31
0

Problem chyba jednak nie taki banalny. Na powyższym forum rozwiązanie owszem mamy, ale to iterowanie tablicy ZDEFINIOWANEJ. A mnie chodzi o wyznaczenie ilości "wierszy' w tablicy niezdefiniowanej

Pozostało 580 znaków

2011-08-25 20:36

Użyj mózgu oraz funkcji

High

Poza tym, nie ma czegoś takiego, jak tablica niezdefiniowana
Raczej chodzi o dynamiczną :P


tak, chodzi o dynamiczną :P Za długo przy tym siedze, czas odpocząć... - JacekKw 2011-08-25 20:56

Pozostało 580 znaków

2011-08-25 21:46
0

Jeżeli chodzi o tablice dynamiczną to najlepiej zrobić tak:

var
i:integer;//Koniecznie z obsługą liczb ujemnych
[...]
 
for i:=0 to length(tab)-1 do ...;

Dlaczego?
Bo gdy tablica ma długość zerową, to high zwróci 0 i otrzymamy błąd gdyż pętla będzie dla elementu zerowego.
Używając length i odejmując 1 dla ilości elementów=0 otrzymamy 0..-1 więc nie wykona się ani razu.


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.
ja bym to "najlepiej" zamienił na "najłatwiej" - krwq 2011-08-25 22:58
A są jakieś minusy tego rozwiązania? - payl 2011-08-25 23:03
nie jestem pewien, ale wydaje mi się że wyrażenie: length(tab)-1 wywoływane jest co iteracje, co czasami może dość spowolnić - krwq 2011-08-25 23:33
For - 'wyrażenie to jest obliczane jednorazowo przed rozpoczęciem wykonywania całej pętli'.... Więc tak jak myślałem. Jakieś inne minusy, abym nie mógł nazwać tego rozwiązania najlepszym? :-] - payl 2011-08-25 23:37
rzeczywiście, myślałem że działą podobnie jak w c++, zwracam honor :P - krwq 2011-08-25 23:44

Pozostało 580 znaków

2011-08-26 15:42
0

Lepiej użyć funkcji high i low na wypadek gdyby tablica nie była od 0 (dynamiczna akurat zawsze będzie, ale lepiej się przyzwyczaić do ogólnego rozwiązania)

A użyj high i low na 0 tablicy dynamicznej i obserwuj error 201. - payl 2011-08-26 19:13
nie rozumiem? podaj przykład. - Azarien 2011-09-01 19:52
var tab:array of TAzarien; setlength(tab,0); for i:=low(tab) to high(tab) do writeln(tab[i].PodajImie); - payl 2011-09-01 19:58

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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