Witam,
w moim programie znalazłem pewien błąd, który się powtarza, a wg mnie nie powinien. Z racji obszerności kodu przedstawie tylko testowy z samym błędem:
program test;
uses crt;
var a:array [1..5] of integer;
i:integer;
function tablica(var tab:array of integer):byte; {referencja przy tablicy tab, wiec elementy globalnej tablicy a powinny sie zmieniac}
begin
tab[1]:=3;
tab[4]:=1;
end;
BEGIN
clrscr;
for i:=1 to 5 do a[i]:=i;
tablica(a);
for i:=1 to 5 do writeln(a[i]); {no i sie zmieniaja tylko tak, jakby w funkcji tablica() występowało numerowanie od 0
a nie 1 do 5 jak w pascalu, co widac przy wypisaniu}
repeat until keypressed;
END.
Po uruchomieniu tego programu otrzymujemy takie wyniki:
1 //a[1]
3 //..
3
4
1//a[5]
Funkcja powinna zmienic pozycje 1 na 3, tutaj zmienia pozycje 2, i pozycje 4 na 1, tutaj zmienia pozycje 5.
Nie wiem czy czegos nie wiem, czy jak?
Prosze o pomoc jak rozwiazać ten problem, występuje on nie tylko przy tablicach referencyjnych, samo operowanie tablicą w funkcji zaczyna sie jakby od 0