dimenziós tömbök

Egy tömb rendezett halmaza típusú változók (tétel). Mindegyik elemnek van egy egész sorszámot, az úgynevezett index. Az elemek száma a tömbben hívják a dimenziója. A tömböket használnak ahol feldolgozásához szükséges több változó azonos típusú - például 20 diák értékeli az összes koordinátái, vagy a csoport 10 pont a síkon. Sor szöveget lehet tekinteni, mint egy sor karaktert, és a szöveg az oldalon - mint egy tömböt.

A tömb részben leírt var nyilatkozat hasonló a következő:

var ArrayName: array [NO. VI] típusú;

NO (alsó index) - egész számú, az 1. tömbelem;

.. -- Pascal tartományban operátor (lásd 7.8 ..);

VI (felső index) - egész számú utolsó eleme;

Type - bármilyen ismert típusú Pascal adatokat. Minden eleme a tömb kell tekinteni, mint változó, a megfelelő típusú.

Bemutatjuk több készlet különböző célokra.

var egy: array [1..20] az egész;

Itt leírjuk tömb nevű A, amely 20 elemeinek integer;

var x, y. array [1..10] valós;

Leírja 2 tömb x és y neveket tartalmazó 10 anyagi elemeket;

var t. array [0..9] string;

T tömb tartalmaz 10 sorok, amelyek számozása az nulla.

Ez könnyen belátható, hogy a dimenziója (elemek száma) a tömb számítjuk WI - NO + 1.

Eléréséhez egyedi eleme a tömböt használjuk ArrayName üzemeltetője formájában [Index].

Itt index - egy egész szám az elem számát (egész szám lehet expresszió vagy állandó). Az index nem lehet kisebb, mint az alacsonyabb vagy magasabb, mint a felső tömb indexet, vagy hiba „Constant tartományon kívül”. lehet használni egy külön elem, a tömb, valamint a megfelelő típusú változó, például:

Ebben a fejezetben tanulmányozzuk az egydimenziós tömb, amelyben minden egyes elemnek egyetlen számot (az index), az jellemzi, hogy pozícióját a tömbben. A matematika, a fogalom a egydimenziós tömb n elem megfelelő fogalmát vektor az N komponensek: A = i>, i = 1, 2 n.

Jellemzően, a bemeneti, feldolgozási és kimeneti tömb végezzük elemenkénti, felhasználva a ciklus.

A legegyszerűbb módja annak, hogy adja meg - adja meg a tömböt a billentyűzet:

var egy: array [1..n] valós;

writeln ( 'Enter a tömb elemeinek');

i: = 1-től n do olvasni (A [i]);

A méret a tömb által meghatározott konstans n elemet egy-egy hurok számára - ha fut a program a felhasználó meg kell adnia a 10 számértékek. Megoldásában a nevelési problémákat, hogy belépjen tömbök „manuálisan”, különösen, ha azok mérete is nagy, ez nem mindig kényelmes. Van legalább két alternatív megoldást.

Leírás tömb konstans kényelmes, ha a tömb elemeinek nem kell megváltoztatni futás közben. Csakúgy, mint más állandók, állandók tömbök fejezetben leírt const. Itt látható egy példa egy ilyen leírása:

Const egy: array [1..5] valódi = (

Amint látható a példa, tömbelemek zárójelben a vessző után, számuk kell felelnie annak méreteit.

Forming a tömb a véletlenszerű értékek a megfelelő, amennyiben, a probléma megoldására tömb csak arra szolgál, hogy bemutassa egy adott algoritmus, és specifikus értékeit jelentéktelen elemek. Annak érdekében, hogy megkapja a következő véletlen értéket a standard függvény random (N), ahol N átvitt paraméterérték szekvencia típusa. Ez visszaad egy véletlenszámot ugyanolyan típusú, mint a típusa az érvelés és fekszik a tartomány 0 N-1 közötti értékű. Például, az üzemeltető a forma egy [1]: = Random (100); rekord a [1] egy véletlen számot az a [0,99].

Annak érdekében, hogy indítsa el a programot mindegyik lánc új volt véletlen számot, mielőtt az első hívást a nézőtér véletlen szokásos eljárás randomize, kiváltja a véletlenszám-generátor. Itt egy példa a töltés a tömb 20 elemek véletlen számok fekvő -10 és 10:

var egy: array [1..20] az egész;

i: = 1-től 20 do kezdeni

Még kényelmesebb - olvassa a tömb elemeit egy szöveges vagy bináris fájlt. Ezzel a témával fejezetben. 21. és 22..

Ahhoz, hogy alkalmazza az összes tipikus elrendezése algoritmusok, tanulmányozta a témát „ciklus”. Hogy csak egy példát, amelyben a számított összege s pozitív elemet a tömbben.

var b: array [1..5] valós;

writeln ( 'Enter tömbelemek 5');

i: = 1-től 5 olvassák (b [i]);

i: = 1-től 5 tenni, ha b [i]> 0, akkor s: = s + b [i];

A következtetés a tömb a képernyőn is elvégezhető a segítségével a for ciklus.

i: = 1-től 5 do write (b [i]: 6: 2);

Ott b 5 tömbelemek nyomtatott egy sorban. Ahhoz, hogy megjelenjen egy elemet ugyanazon a vonalon lehet használni writeln üzemeltetője helyett írni.

Jelentősen, ha a tömb feldolgozást végeznek egymás után az egyik elemmel bemeneti és feldolgozási ciklusok gyakran kombinálni lehet, mint az alábbi példa.

Keresse meg a számtani átlagát valós tömb elemeinek dimenzió t 6 és a minimum érték eleme.

var b: array [1..6] valós;

writeln ( 'B bemenet [6]');

i: = 1-től 6 do kezdeni

ha B [i]

writeln ( 'min =', min, 's =', s / 6);

Elméletileg ez a program lehetett tenni anélkül, hogy a tömb - sőt az elemek b [i] felhasználása csak tárolása és visszakeresése a maximális összeget, hogy a leírás a tömb könnyen helyettesíti a leírást egy valós változó b. Ugyanakkor a valós alkalmazások az adatokat rendszerint kezelik, és sokszor anélkül, hogy a tömbök kezeléséhez nehéz. Itt egy példa a tanulási feladatokat, amelyek esetében a tömb biztosít nyereséget mennyiségének csökkentésével elvégzett számítások szerint a programot.

Adott egy szekvencia Ti = max, i = -5, -4. 5. Keresse meg az elemet a szekvenciát, amely a minimális eltérés a számtani átlaga pozitív elemeket.

Itt az első ciklusban lehet kialakítani egy sor előre meghatározott szabály, és segítenek megtalálni a számtani átlaga pozitív elemeket. A második ciklusban, amikor az átlagos ismert, akkor keressük meg az eltérést. Használata nélkül a tömb, mi lett volna, hogy fontolja meg az elemek a sorozatot kétszer.

var t. array [-5..5] valós;

i: = - 5-5 do kezdődik

ha t [i]

ha t [i]> 0, akkor kezdődik

i: = - 5-5 do kezdődik

ha abs (t [i] -s)

writeln ( 'Ot =', OT: 8: 2);

Az elosztott feldolgozás egy probléma több tömbök. Itt egy példa.

Pontok koordinátáinak 10 meghatározott síkban tömbök X = i>, y = i>, i = 1, 2. 10. Find a hossza egy sokszögű vonal ponton áthaladó (x1. Y1), (X2. Y2). (X10. Y10), valamint a pontok számát fekvő legtávolabb eredetét.

A probléma megoldásának a következő képlet segítségével megtalálja a két pont közötti távolság a gépen, mivel a koordinátákat (x1, y1) és (x2, y2) :.

R jelöli a távolságot az aktuális pont és a következő, Len kívánt hosszúságú sokszögű, Dist - távolság az aktuális pont a származási, max - a maximális E távolságok, Num - a kívánt pontok száma.

var x, y. array [1..10] valós;

R, Len, Dist, max. igazi;

writeln ( „Add meg a koordinátákat a pont 10”);

i: = 1-től 10 do kezdődik

Dist: = sqrt (sqr (x [i]) + sqr (y [i]));

ha dist> max akkor kezdődik

writeln ( 'Point szám =' num,

i: = 1-től 9 do kezdődik

r: = sqrt (sqr (x [i] -x [i + 1]) +

writeln ( 'hossza lejtős =', len: 8: 2);

Itt egy példa a probléma kialakulásának a szabály tömb.

Mivel x 8 tömbelemek. Alkossák y a szabály alapján

és keresse meg a számát a pozitív elemeket.

var x, y: array [1..8] valós;

writeln ( 'Enter egy sor 8 x e.');

i: = 1-től 8 nem kezdődik

ha i mod 2 = 0, akkor Y [i]: = 4 * x [i]

Kapcsolódó cikkek