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!} |
|
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 |
|