9. Ukazovatele a polia

9.2 Pole – zopakujme si

Pole ako údajovú štruktúru zloženú z prvkov rovnakého typu nie je potrebné zvlášť predstavovať. V jazyku C síce platia isté obmedzenia (pole vždy začína prvkom s indexom 0, medze polí sa nekontrolujú a pod.), ale vďaka úzkej súvislosti medzi poliami a pointermi (pointerová aritmetika) dokážeme s poliami „stvárať“ oveľa zaujímavejšie kúsky, ako napr. v Pascale. 🙂

 Cieľom tejto časti nie je vysvetliť všetko, čo sa týka polí v jazyku C, ale predovšetkým poukázať na blízkosť pointerov a polí, pozrieť sa na pole s iného pohľadu ako sme boli doposiaľ zvyknutí (napr. z Pascalu) – z pohľadu pointerovej aritmetiky.


Vráťme sa na chvíľu k príkladu, ktorý už asi každý z vás niekedy naprogramoval. (Alebo aspoň nejaký podobný. 🙂) Zopakujeme si, čo by ste už o práci s poľom mali vedieť.
 
Úloha znie takto: V poli, do ktorého načítame n celých čísel zo vstupu, máme vyhľadať najväčší prvok t. j. maximum.

#include <stdio.h>
#define POCET 50

void main(void)
{
	int a[POCET]; /* pole 50 prvkov, indexy od 0 po 49! */
	int n, i, max;

	printf("pocet prvkov n = "); /* vstup */
	scanf("%d\n", &n);
	for (i = 0; i < n ; i++) {
		printf("%d. prvok:  ", i + 1);
		scanf("%d", &a[i]);
	}
	max = a[0]; /* hľadanie maxima */
	for (i = 0; i < n ; i++) {
		if (a[i] > max) max = a[i];
	}

	printf("Maximum je %d \n", max); /* výstup */
}