Polia
Úvod
Polia používame vtedy, keď potrebujeme v pamäti evidovať a spracovávať veľké množstvo údajov (tabuľky hodnôt, zoznamy čísel...).
Pole zadeklarujeme:
float v[7];
V pamäti vznikne 7 premenných typu float, ktoré sú uložené postupne za sebou - takúto údajovú štruktúru nazývame pole (anglicky array). Jednotlivým premenným hovoríme prvky poľa {pole v má 7 prvkov):
v[0] v[1] v[2] ... v[6]
...
S prvkami pracujeme pomocou indexov: v[0], v[1], v[2], ..., v[6]. Napríklad, výraz v[2] predstavuje v poradí tretí prvok poľa (pozor na číslovanie od nuly). Prvok v[2] je už jednoduchá premennú typu float.
v[0]=12.3; // teplota v pondelok
v[1]=13.7; // teplota v utorok
v[2]=18.5; // teplota v stredu
...
v[6]=10.4; // teplota v nedeľu
Po priradeniach budú v poli uložené hodnoty:
v[0] v[1] v[2] ... v[6]
12,3
13,7
18,5
...
10,4
Výpočet priemeru z nameraných hodnôt:
float priemer;
priemer=(v[0]+v[1]+v[2]+v[3]+v[4]+v[5]+v [6])/7;
Na vypočítanie priemeru máme aj elegantnejšie riešenie. Vieme, že v hranatých zátvorkách sa uvádza index prvku. Index nemusí byť iba konštanta, ale môže to byť aj výraz, napríklad:
v[5-3]=18.5; // je to isté ako v[2]=18.5;
alebo aj:
int a=5;
v[a-3]=78.5; // opäť pracujeme s prvkom v[2]
Výpočet priemernej hodnoty:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float v[7];
float priemer=0;
int i;
v[0]=12.3; // teplota v pondelok
v[1]=13.7; // teplota v utorok
v[2]=18.5; // teplota v stredu
v[3]=16.1;
v[4]=14.3;
v[5]=17.9;
v[6]=10.4; // teplota v nedeľu
for (i=0; i<7; i++) priemer=priemer+v[i];
priemer=priemer/7;
g->TextOut(0, 0, priemer);
}
Výpis nadpriemerných hodnôt (pokračujeme v predchádzajúcej funkcii):
int y=20;
for (i=0; i<7; i++) // pole prezrieme ešte raz
if (v[i]>=priem) { // zaujímajú nás iba nadpriemerné hodnoty
g->TextOut(0, y, v[i]);
y=y+15;
}
Hľadanie maximálnej hodnoty:
int max;
max=v[0];
for (i=1; i<7; i++)
if (max<v[i]) max=v[i];
g->TextOut(0, 200, max);
Pravidlá pri práci s poľom
1. Deklarácia poľa:
typ meno[počet];
Pričom:
* typ ... určuje typ prvkov poľa: int, float, double, char, bool ...
* meno ... meno poľa je identifikátor (platia preň rovnaké pravidlá, ako pre pomenovanie premenných)
* počet ... počet prvkov poľa počet>=1, ale nesmie byť príliš veľký (inak by sa pole nezmestilo do pamäte). Počet prvkov poľa musí byť známy už pri kompilácii (vo výraze nesmú byť premenné).
2. Predchádzajúcou deklaráciu vznikne pole, ktoré má prvky meno[0], ... , meno[index], ... meno[počet-1]. My sami sa musíme postarať o to, aby sme indexovali iba existujúce prvky poľa, t.j. aby vždy platilo, že: