Zdravím všechny,
potřeboval bych pomoct. Mohl by mi někdo poradit, jakým způsobem si lze nadefinovat vlastní proměnný datový typ? Příklad:
Když si třeba budu chtít nadefinovat datový typ - matice, jejíž velikost bude záviset na uživateli, postupoval bych nejspíše takto:
program pokus;
uses crt;
type matice = array[1..n,1..n] of integer;
.
.
.
problém bude, že to takto nebude fungovat. Nevěděl by někdo jak to ošetřit? Zkoušel sem to pomocí dynamických polí, ale zatím bezúspěchu.
Díky moc.
Fórum › Pascal
Datový typ
Nejrychlejší řešení (z hlediska pracnosti) je nadefinovat si maximální
velikost array[1..100,1..100]of integer; a to ti umožní přístup pro n pokud očekáváš hodn. do 100.
Jinak to udělat nemůžeš. Je to kvuli tomu, ze by spusteny program nevedel jak z 2 rozmerne prevadet na linearni adresu.
Pokud chceš přesně velkou dynamickou proměnnou můžeš zkusit přístup přes funkci místo pole
napr. u silne nesymetricke matice (10x5000),(..)
function cteni(x,y:integer):integer; {x,y souradnice pro cteni}
procedure zapis(x,y,co:integer); {co = slovo k zapsani}
Vevnitr funkce budes pristupovat treba ke globalni promenne Buffer
Buffer : ^array[1..10000000]of integer; {jen zkratkove}
buffer^[x+n*y]:=co; {podobne pro cteni}
Vyhoda tohoto pristupu je snadne ohlidani si presahu, ale ztratis neco na rychlosti.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Dátový typ — založil zonda
Špatný datový typ? — založil Díkydíky
Datový typ v tabulce — založil LiDr
Datový typ - 256 bitů — založil Hlavinka
64-bit datový typ cisla — založil zak
Moderátoři diskuze