Kezdőoldal » Számítástechnika » Programozás » Free Pascal-ban Pointer...

Free Pascal-ban Pointer elemeket tartalmazó tömböt miként töltök fel, illetve konstansként hogy adom meg az elemeit és miként hivatkozom az elemekre? (bővebben lent a program).

Figyelt kérdés

Ebben a példaprogramban az érdekelne, hogy például miként tudom rendezni az ilyen elemeket, valamint ha konstansként szeretném őket megadni, vagy ciklussal feltölteni a tömböt, ezt miként tegyem?

konstansként történő definiálásra is kérhetek példát? a tszam változót elég ha háromra teszitek, nem kell kézzel ilyen sok elemet megadni. :-)


Ez a fajta deklarálás miben jobb, előnyösebb, mint ha statikus vagy dinamikus tömböt használnék?

A mutatót ebben a programban mikor kell "nil" értékre állítani?


Program Ptomb;

Const

tszam = 20;

Type

TElem = ^Longint;

Var

tomb : Array[0..tszam] of TElem;

i,j,cs : Longint;

Begin

For i := 0 to tszam -1 do

begin

for j := i+1 to tszam do

begin

Itt hogyan tovább?

End;

End;

End.



2015. jan. 20. 19:09
 1/9 A kérdező kommentje:

Valamilyen Free Pascal Tutorial-ban azt olvastam hogy @ jellel kell az elemekre hivatkozni, de nem akar összejönni...

Ezért nem tudtam megírni a ciklus belsejét.

cs:=@tomb[i];

@tomb[i]:=@tomb[j];

@tomb[j]:=cs;

Ha a @ jelet a tomb és a [ közé teszem, akkor sem jó... Közben rájöttem hogy talán a "cs"-t is esetleg TElemként kellett volna definiálni, de gondolom hogy az I, j az maradhat sima longint, vagy esetleg itt is tévedek?

Hányféleképp lehet hivatkozni az elemekre mutatókkal?

2015. jan. 20. 19:29
 2/9 SimkoL ***** válasza:

Innen: [link]

Ez:

program exPointers;

const MAX = 3;

type

iptr = ^integer;

var

arr: array [1..MAX] of integer = (10, 100, 200);

i: integer;

parray: array[1..MAX] of iptr;

begin

(* let us assign the addresses to parray *)

for i:= 1 to MAX do

parray[i] := @arr[i];

(* let us print the values using the pointer array *)

for i:=1 to MAX do

writeln(' Value of arr[', i, '] = ' , parray[i]^ );

end.

2015. jan. 20. 19:46
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
Köszönöm. Ezek szerint mindig két tömb kell hozzá? Nagyon régen, az '90-es évek közepén egy tömbbel történő mutatózást láttam, csak nár nem sokra emlékszem, csak olyanra, hogy a programban a tmb előző és következő elemére lehetett mutogatni, vagy nil-re és ott csak egy, mutatókból álló tömb volt.
2015. jan. 20. 19:52
 4/9 A kérdező kommentje:
Rendezésnél cserélni miként tudok, ha miután a sima array címeii a Parray-ba kerültek, hogy a Parray-n hajtsam végre a rendezést és cserét, ezt még megkérdezhetem miként kell végrehajtani ebben a programban?
2015. jan. 20. 19:56
 5/9 SimkoL ***** válasza:

Nem kell tömb, bárhol lehet az a szám:


program Mutatok;

const MAX = 4;

type

iptr = ^integer;

var i, j, i1, i2, i3, i4: integer;

parray: array[1..MAX] of iptr;

temp : iptr;

begin

i1 := 100;

i2 := 200;

i3 := 50;

i4 := 10;

parray[1] := @i1;

parray[2] := @i2;

parray[3] := @i3;

parray[4] := @i4;

Write(#10#13, 'Szamok: :');

for i := 1 to MAX do

Write(parray[i]^:5);

for i := MAX downto 1 do

begin

for j := 1 to i do

begin

if parray[j]^ > parray[j + 1]^ then

begin

temp := parray[j];

parray[j] := parray[j+1];

parray[j+1] := temp;

end;

end;

end;

Write(#10#13, 'Szamok rendezve: :');

for i := 1 to MAX do

Write(parray[i]^:5);

ReadLn;

end.


Talán így a példával érthetőbb.

2015. jan. 20. 20:41
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:

Igen, így már érthetőbb.

Programozás szempontjából miért jobb ilyen tömböket használni, mint statikus vagy dinamikus tömböket, a memóriában gyorsabb a művelet a mutatózásokkal, mert mindegyik elem memóriacíme közvetlenül hozzáférhető (mintha ezt olvastam volna valahol) vagy nem igazán gyorsabb?

2015. jan. 20. 21:01
 7/9 SimkoL ***** válasza:
Én nem tesztelgettem, de kisebb méretű adatoknál nem hiszem, hogy nagyon észlelhető. Nem is nagyon szeretem, hacsak nem kell, nem használom. Nagyobb méretekhez pedig vannak komponensek.
2015. jan. 20. 21:20
Hasznos számodra ez a válasz?
 8/9 A kérdező kommentje:
Milyen komponensekre gondolsz, például ha párszázezer elemről van szó a memóriában, arra is van hatékony módszer (most csak a tömb indexeinek elérési hatékonyságára gondolok, nem a rendezési algoritmusra).
2015. jan. 20. 21:31
 9/9 SimkoL ***** válasza:
Vannak különböző List-ek, adatbázisok. Általában Delphi-ben írogatok, nem nagyon merülök benne külön a tömbökbe.
2015. jan. 20. 23:47
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!