Polia
Jednorozmerné pole
syntax:
typ_datovej_premennej
meno_pola[
velkost_pola
];
Ako sme si vyššie zadefinovali, pole sa v programovaní využíva na uchovávanie viacerých hodnôt rovnakého dátového typu pod jedným názvom, názvom poľa, a rozlíšene sú iba indexom.
Predstavme si, že chceme uchovávať zoznam skóre žiakov v triede z opravnej písomky z informatiky. Poslednú písomku z informatiky pokazilo iba 5 žiakov, očíslujme si ich teda od 0 po 4. Môžeme vytvoriť pole s názvom "skore" a do tohto poľa môžeme uložiť skóre každého žiaka, kde číslo ktoré sme každému priradili bude jeho index v poli.
V tomto príklade sme vytvorili pole skore s kapacitou na 5 hodnôt a inicializovali sme ho na nulové hodnoty. To zabezpečí, že všetky prvky poľa majú hodnotu 0, ak nebudú explicitne nastavené inak. Tým sa predchádza problémom s nepredvídateľnými hodnotami.
#include <stdio.h>
int main()
{
// Deklarácia poľa na uchovávanie skóre žiakov pre 5 žiakov a inicializácia na nulové hodnoty
int skore[5] = {0};
// Priradenie hodnôt do poľa
skore[0] = 90;
skore[1] = 85;
skore[2] = 88;
skore[3] = 92;
skore[4] = 78;
// Výpis hodnôt z poľa
printf("Skore žiakov:\n");
printf("Žiak 1: %d\n", skore[0]);
printf("Žiak 2: %d\n", skore[1]);
printf("Žiak 3: %d\n", skore[2]);
printf("Žiak 4: %d\n", skore[3]);
printf("Žiak 5: %d\n", skore[4]);
return 0;
}
Očakávaný výsledok

Dôležité je si uvedomiť, že indexy v poliach v jazyku C začínajú od 0, takže prvý prvok má index 0, druhý má index 1 a tak ďalej. Preto sme na zaciatku studentom pridelovali cisla od 0 po 4.
Týmto spôsobom môžeme uchovávať a manipulovať s viacerými hodnotami rovnakého typu v nasich programoch. Existuje aj dynamické alokovanie pamäti, ktoré umožňuje meniť veľkosť poľa počas behu programu, ale to je pokročilejší koncept, ktorý by sme mohli skúmať neskôr. Teraz sa sústredíme na statické pole ako na základný koncept, ktorý pomôže pri našom programátorskom začiatku.
Úloha číslo 1: Napíšte program ktorý obsahuje pole s 5 prvkami od 1 po 5 a následne vypíše jednotlivé hodnoty týchto prvkov pomocou cyklu for
#include<stdio.h>
int main()
{
int pole[5] = {1,2,3,4,5};
for (int i = 0; i < 5; i++)
{
printf("%d ", pole[i]);
}
return 0;
}

Úloha číslo 2: Napíšte program ktorý obsahuje pole s 5 prvkami od 1 po 5 a následne vypíše ich súčet použi pri tom cyklus for
#include<stdio.h>
int main()
{
int pole[5] = {1,2,3,4,5};
int suma = 0;
for (int i = 0; i < 5; i++)
{
suma += pole[i];
}
printf("Súčet prvkov poľa: %d\n", suma);
return 0;
}

Úloha číslo 3: Napíšte program ktorý obsahuje pole s 5 prvkami a následne vypíše najväčší prvok poľa použi pri tom cyklus for
#include<stdio.h>
int main()
{
int pole[5] = {12, 45, 67, 89, 34};
int max = 0;
for (int i = 0; i < 5; i++)
{
if (pole[i] > max)
{
max = pole[i];
}
}
printf("Najväčší prvok poľa: %d\n", max);
return 0;
}

Úloha číslo 4: Napíšte program ktorý obsahuje pole s 4 prvkami s hodnotami od 2 po 5 a následne vypíše ich súčin použi pri tom cyklus for
#include<stdio.h>
int main()
{
int pole[4] = {2, 3, 4, 5};
int vysledok = 1;
for (int i = 0; i < 4; i++)
{
vysledok *= pole[i];
}
printf("Súčin prvkov poľa: %d\n", vysledok);
return 0;
}

Úloha číslo 5: Napíšte program na výpočet fibonačiho postupnosti s pomocou poľa
#include <stdio.h>
int main() {
int pocetPrvkov;
printf("Zadajte počet prvkov Fibonacciho postupnosti: ");
scanf("%d", &pocetPrvkov);
if (pocetPrvkov <= 0) {
printf("Neplatný vstup. Počet prvkov musí byť kladné číslo.\n");
return 1;
}
int fib[pocetPrvkov];
fib[0] = 0;
fib[1] = 1;
for (int i = 2; i < pocetPrvkov; i++) {
fib[i] = fib[i - 1] + fib[i - 2];
}
printf("Fibonacciho postupnost pre %d prvkov:\n", pocetPrvkov);
for (int i = 0; i < pocetPrvkov; i++) {
printf("%d ", fib[i]);
}
printf("\n");
return 0;
}

Dvojrozmerné pole
syntax:
typ_datovej_premennej
meno_pola[
riadky][stlpce]
;
Vzorový príklad:
Napíšte program ktorý vypíše teploty 3 rôznych miest v jednom týždni pritom použite dvojrozmerné pole a cyklus for
#include <stdio.h>
int main() {
// Definícia dvojrozmerného poľa pre teplotu
float teploty[3][7] = {
{28.5, 29.0, 27.5, 30.2, 26.8, 29.5, 31.0}, // Mesto 1
{30.0, 31.2, 28.8, 32.5, 29.6, 31.0, 33.5}, // Mesto 2
{26.0, 27.5, 25.8, 28.0, 25.5, 27.0, 28.5} // Mesto 3
};
// Výpis teplôt pre každé mesto
for (int mesto = 0; mesto < 3; mesto++) {
printf("Teploty pre Mesto %d:\n", mesto + 1);
for (int den = 0; den < 7; den++) {
printf("Deň %d: %.1f°C\n", den + 1, teploty[mesto][den]);
}
printf("\n"); // Oddelenie jednotlivých miest
}
return 0;
}
očakávaný výsledok

Úloha číslo 1: Napíšte program ktorý obsahuje dvojrozmerné pole s 3 riadkami a 4 stĺpcami s prvkami od 1 po 12 a následne vypíše jednotlivé hodnoty týchto prvkov pomocou cyklu for
#include <stdio.h>
int main()
{
int dvojrozmerne_pole[3][4] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12} };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
printf("%d ", dvojrozmerne_pole[i][j]);
}
printf("\n");
}
return 0;
}

Úloha číslo 2: Napíšte program ktorý obsahuje dvojrozmerné pole s 3 riadkami a 3 stĺpcami s prvkami od 1 do 9 a následne vypíše ich súčet použi pri tom cyklus for
#include <stdio.h>
int main()
{
int dvojrozmerne_pole[3][3] = { {1, 2, 3},
{4, 5, 6},
{7, 8, 9} };
int suma = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
suma += dvojrozmerne_pole[i][j];
}
}
printf("Súčet prvkov dvojrozmerného poľa: %d\n", suma);
return 0;
}

Úloha číslo 3: Napíšte program ktorý obsahuje dvojrozmerné pole s 3 riadkami a 3 stĺpcami s vami vybranými prvkami a následne vypíše najväčší prvok poľa použi pri tom cyklus for
#include <stdio.h>
int main()
{
int dvojrozmerne_pole[3][3];
printf("Zadajte hodnoty do matice:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("Zadajte hodnotu pre dvojrozmerne_pole[%d][%d]: ", i, j);
scanf("%d", &dvojrozmerne_pole[i][j]);
}
}
int max = dvojrozmerne_pole[0][0];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
if (dvojrozmerne_pole[i][j] > max)
{
max = dvojrozmerne_pole[i][j];
}
}
}
printf("Najväčší prvok v dvojrozmernom poli: %d\n", max);
return 0;
}

Úloha číslo 4: Napíšte program ktorý obsahuje dvojrozmerné pole s 2 riadkami a 3 stĺpcami s prvkami s hodnotami od 1 do 6 načítanými používateľom a následne vypíše ich súčin použi pri tom cyklus for
#include <stdio.h>
int main()
{
int dvojrozmerne_pole[2][3];
printf("Zadajte hodnoty do matice:\n");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("Zadajte hodnotu pre dvojrozmerne_pole[%d][%d]: ", i, j);
scanf("%d", &dvojrozmerne_pole[i][j]);
}
}
int vysledok = 1;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
vysledok *= dvojrozmerne_pole[i][j];
}
}
printf("Súčin prvkov dvojrozmerného poľa: %d\n", vysledok);
return 0;
}
