Tömbök-1
vitafórum(0)
szerző: elodanidátum: 2009-06-02
Kategóriák:
Pascal/Alapok
Nos nézzük az alapproblémánkat:
Ha sok azonos típusú adattal kell dolgoznunk, akkor minden egyes változót külön kéne deklarálni (Ez rettentő fáradtságos, és időigényes nem beszélve arról, hogy az olvasásuk írásuk is bonyolult lenne).
Viszont itt a segítség: Azonos típusú adatokat tömbben is tárolhatunk
Előnyei:
+Egyetlen deklarációval létrehozható
+Az adatok könnyen elérhetők
+A kódunk sokkal áttekinthetőbb lesz
+ciklussal könnyedén feldolgozhatók
Hátránya:
-futás közben nem változtathatjuk a méretét
Deklarációja:
VAR tomb: array[1..10] of integer;
Azt hiszem a fenti kis sorocska egy kis magyarázatra szorul
A tömb-deklarálás kulcsszava az array mögötte [] jelek között adjuk meg, hány elemű tömböt szeretnénk.
Általában a számozást 0-tól vagy 1 től kezdjük (szerintem kezdjük inkább 1-től a jobb érthetőség kedvéért, de persze akár 213 tól is kezdhetnénk, de annak semmi értelme ;)
A fenti példában egy 10 elemű tömböt hoztunk létre. a végén pedig of után adjuk meg az alaptípust, amiből a tömbünk majd állni fog (a példában integer).
A tömb adatainak elérése:
Az n-edik elem: tömb[n]
Ebből is rendkívül jól leszűrhető, hogy egy for ciklussal könnyedén bejárható egy tömb.
nézzünk egy példát:
- program pelda1;
- var tomb:array[1..5] of byte;
- i:integer;
- begin
- tomb[1]:=10;
- tomb[2]:=33;
- tomb[3]:=21;
- tomb[4]:=120;
- tomb[5]:=51;
- for i:= 1 to 5 do writeln(tomb[i]);
- readln;
- end.
Ez a kis progi feltölt adatokkal egy tömböt aztán végigmegy egy for-ciklussal a tömbön és mindig annyiadik elemét írja ki ahányadiknál a ciklus tart.
Nézzünk pár igen gyakori feladatot tömbökkel:
1) beolvasás-kiiratás
- program beolvas-kiir;
- var i:integer;
- tomb:array[1..20] of char;
- begin
- for i:= 1 to 20 do readln(tomb[i]);
- for i:= 1 to 20 do writeln(tomb[i]);
- readln;
- end.
2) átlag
- program atlag;
- var i,osszeg,atlag:integer;
- tomb:array[1..20] of integer;
- begin
- for i:= 1 to 20 do readln(tomb[i]);
- for i:= 1 to 20 do osszeg:=osszeg+tomb[i];
- atlag:=osszeg/20;
- writeln('A beolvasott tömb átlaga: ',atlag);
- readln;
- end.
3) minimum és maximum
- program min-max;
- var i,min,max:integer;
- tomb:array[1..20] of integer;
- begin
- for i:= 1 to 20 do readln(tomb[i]);
- for i:= 1 to 20 do begin
- if tomb[i]>max then max:=tomb[i];
- if tomb[i]<min then min:=tomb[i];
- end;
- writeln('A beolvasott tömb minimuma: ',min);
- writeln('A beolvasott tömb maximuma: ',max);
- readln;
- end.
Folytatása következik....
