headerphoto

Pole

Pole je datová struktura, která obsahuje prvky stejného datového typu. Je to statická struktura, t.j. při překladu programu je určený maximální počet prvků v poli. Při práci s polem je potřebné znát taky aktuální počet prvků, který určuje, kolik hodnot je v poli uloženo. Aktuální počet nesmí být větší než maximální počet prvků. Jazyk C nekontroluje rozsah pole, proto je nutné, aby to zajistil programátor ve svém kódu.

Pořadí jednotlivých prvků v poli je dáno indexem, v jazyce C začíná index vždy od 0. V paměti je pole uloženo jako souvislá oblast, její velikost je určená rozsahem pole a datovým typem.

V programu nelze pracovat s celým polem najednou, vždy jen po prvcích. Nelze např. jedním příkazem zvýšit hodnotu všech prvků o 1. Musíme vždy procházet postupně jednotlivé prvky v poli a u každého změnit hodnotu. Pro procházení pole zvolíme vhodnou smyčku (nejlépe for). Stejně postupujeme při načítání hodnot do pole, při jejich výpisu, případně při jakémkoliv zpracování hodnot, uložených v poli.

Deklarace pole určuje datový typ prvků, název pole a jeho maximální rozsah:

typ nazev_pole[max_rozsah];

int absence[35];

- deklaruje pole s názvem absence, které může obsahovat maximálně 35 celočíselných hodnot. Pole můžeme použít např. pro uložení absence žáků jedné třídy, přičemž počet žáků může být maximálně 35. Index jednotlivých hodnot začíná od 0 (pro první hodnotu) a může být maximálně 34.
Jazyk C nekontroluje rozsah pole, proto je nutné, aby to zajistil programátor ve svém kódu.

int cisla[5] = {10,20,30,40,50};

- jde o deklaraci s inicializací. Deklaruje pole celých čísel s názvem cisla o velikosti 5. Do pole se hned vloží napsané hodnoty. Pokud není pole při deklaraci inicializováno, obsahuje většinou náhodné hodnoty.

Př. Program uloží do pole zadaný počet náhodných čísel, potom pole vypíše v obráceném pořadí. Generátor bude generovat celá čísla z intervalu <0,100>.

#include <stdio.h>  
#include <stdlib.h>   
#include <time.h>    
#define N 50                       //konstanta pro maximalni rozsah pole       
              
int main()
{       
  int pole[N],i, pocet;    
         
  do 
  {                       
       printf("Zadejte pocet (max. %d): ", N);
       scanf("%d", &pocet);  
  }while (pocet<0 || pocet>N);     //kontrola s rozsahem pole
                                       
  srand( (unsigned) time(NULL) );  //inicializace generatora 
                //zabezpečí, že se nebudou generovat pořád stejná čísla      
                                    
  printf("Vygenerovane pole:\n");   
  for (i=0; i<pocet; i++)   
  {                      
       pole[i] = rand() % 100;     //cisla z <0,99> 
                //operátor % nám určí zbytek po dělení číslem 100
                //a to může být jen číslo od 0 do 99 
       printf("%d  ", pole[i]); 
  }  
      
  printf("\nVypis opacne:\n");  
  for (i=pocet-1; i>=0; i--)  
  {                 
        printf("%d  ", pole[i]);
  }        
  printf("\n\n");    
                   
  system("pause");
  return 0; 
}   
  

Design downloaded from Free Templates - your source for free web templates