Pascal: Deklarált statikus tömb elemeit beépített csere függvénnyel meg lehet cserélni úgy hogy ne kelljen mindegyikhez külön-külön megírni?
Mutatok egy példa-kódot, hogy mire is gondolok.
Deklarálok három különböző méretű statikus tömböt, ha kézzel szeretném megírni a csere függvényt, akkor külön-külön függvényt kell írnom minden tömbre és segéd-változót felvenni.
Nincsen olyan univerzális megoldás, hogy megadom neki: adott tömb 'i' és 'j' eleme cseréljen helyet?
Mindenképpen meg kell írni annyiszor ahány tömb van az adott programban?
program tomb;
var
tomb1 : array[1..100] of longint;
tomb2 : array[1..50] of longint;
tomb3 : array[1..200] of longint;
begin
end.
"Nincsen olyan univerzális megoldás, hogy megadom neki: adott tömb 'i' és 'j' eleme cseréljen helyet? "
Nincs. De meddig tart megírni egy ilyen swap függvényt? Öt perc?
Tudok olyat írni, amely több tömbtípus esetén is kicseréli az adott elemeket, nem kell mindegyikre külön-külön legyártani?
Ismereteim szerint mindegyikre külön-külön le kell gyártani, de ha lehet írni egy univerzálisan működőt, az érdekelne.
Például ezt miként alakítsam univerzálissá hogy ne kelljen legyártani annyiszor ahány tömb van?
procedure csere (var i, j : longint);
var
cs : longint;
begin
cs:=tomb1[i];
tomb1[i]:=tomb1[j];
tomb1[j]:=cs;
end;
procedure csere(var tomb1: array of longint; const i, j : longint);
var cs : longint;
begin
cs:=tomb1[i-1];
tomb1[i-1]:=tomb1[j-1];
tomb1[j-1]:=cs;
end;
Persze, működik is.
De csak azonos típusú elemekből álló tömbökön.
Ahh, kezdem sejteni mit is akarsz.
Neked olyasmi kéne, hogy longint, int vagy byte tipusú elemeket tartalmazó tömb esetén is egy függvény legyen ami cseréli az elemeket.
Ezt is meg lehet oldani, de ekkor vagy typecast kell, vagy tipusokat létrehozni a használt tömbökből és a tipust is átadni paraméterként.
Params:
a: tomb;
b: tomb tipusa;
c: forras_index;
d: cel_index;
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!