Google PageRank

 

Tömbök

Ez "mindössze" arra jó, hogy megszabadítson minket egy csomó fölösleges munkától.

Mi van, ha van legalább 50 változód, amit mind deklarálni kéne?

var szam1, szam2, szam3, szam4, szam5, szam6, szam7, szam8, szam9, szam10, szam11, szam12, szam13, szam14, szam15, szam16, szam17, szam18, szam19, szam20, szam21, szam22, szam23, szam24, szam25, szam26, szam27, szam28, szam29, szam30, szam31, szam32, szam33, szam34, szam35, szam36, szam37, szam38, szam39, szam40, szam41, szam42, szam43, szam44, szam45, szam46, szam47, szam48, szam49, szam50:integer;

Ezt semmiféleképp ne csináljátok utánam! Csak elrettentő példaként mutatom, hogy milyen hosszú, de ilyent többet soha nem teszek. Ezt a problémát egy külön változóval, a tömbbel közelíthetjük meg. Ezen kívül még lesz egy plusz lehetőség a kezelésénél, de előbb nézzük a szintaxist!

var szam:array[1..50]of integer;

{Ez egy egydimenziós tömb, más néven vektor.}

Ugye mennyivel elegánsabb megoldás? És ott tényleg két pont van. Már láttam rá példát, hogy ha nem szólok, akkor önszorgalomból még tesznek egy harmadikat, tehát tessék kivenni, ha már ti is odapakoltátok! Igazság szerint én sem tudom, hogy minek ez a lökött megoldás, ha mindenki úgyis három pontot akar oda tenni

Az „array” szó arra jó, hogy jelezze, hogy tömbről van szó, az „of” pedig, hogy utána határozzuk meg, hogy milyen típusúak az elemek (azaz integer), tehát akár ilyent is lehet csinálni, mint itt:

var szam:array[1..50]of array[1..10] of integer;

{Ez egy kétdimenziós tömb, más néven mátrix.}

Igazság szerint nem tudom, hogy ezt meddig lehetne folytatni, de ennél van okosabb megoldás is:

var szam:array[1..50,1..10] of integer;

{Így néz ki egy kétdimenziós tömb "helyes" deklarálása!}

Bemutató programok

Tegyük fel, hogy egy tömbben szeretnénk tárolni a 2000-nél kisebb prímszámokat. Egy nagyon gyors megoldás egy szám prímességének vizsgálatához az, hogy elosztod a szám négyzetgyöke előtt található prímszámokkal a számot. Ezt valósítjuk most meg:

program primszam;

uses crt;

var

prim:boolean;

i,j,db:word;

{A "j"-nek általában ugyanaz a szerepe, mint az "i"-nek. Ez is index, csak az ábécé következő betűjét használjuk.

A "db" az eddig megtalált prímszámok mennyiségét jelzi.}

primszamok:array[0..400]of word;

{Sajnos nem tudom, hogy 2000-ig hány prímszám van, de kísérleti úton megállapítottam, hogy 401-nél nem több.}

begin

clrscr;

db:=1;

primszamok[0]:=2;

write('2');

for i:=3 to 2000 do

begin

prim:=true;

j:=0;

while(primszamok[j]<>0)and(primszamok[j]<=sqrt(i))do

begin

if i mod primszamok[j]=0 then prim:=false;

inc(j);

end;

if prim then

begin

write(', ',i);

primszamok[db]:=i;

inc(db);

end;

end;

readkey;

end.

Forráskód letöltése

Program letöltése

Töltsünk fel egy 10×10-es mátrixot úgy, hogy szorzótáblaként lehet használni és írassuk ki a képernyőre!

program szorzotabla;

uses crt;

var

tabla:array[1..10,1..10]of byte;

i,j:byte;

begin

clrscr;

for i:=1 to 10 do

begin

for j:=1 to 10 do

begin

tabla[i,j]:=i*j;

write(tabla[i,j]:4);

{Igen, ide is raktam kettőspontot annak ellenére, hogy ez nem valós szám. És csak egyet tettem. Ha növelitek a kettőspont után található értéket, akkor látni fogjátok, hogy mind bennebb és bennebb kezdi a szöveget és távolabb kerülnek egymástól a számok.}

end;

writeln;

end;

readkey;

end.

Forráskód letöltése

Program letöltése