~~NOCACHE~~
~~REVEAL theme=simple&disableLayout=0&transition=none&controls=1&show_progress_bar=1&build_all_lists=0&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024x768~~
====== Tablice======
Tablica przechowuje ciąg elementów tego samego typu, np. liczb całkowitych typu ''int''.
{{ zajecia:pp1_2020_1:tab1.png |}}
Tablica posiada swoją nazwę, ma określony typ elementów składowych oraz rozmiar.
===== Deklaracja tablicy =====
Deklaracja tablicy wygląda w następujący sposób:
int t[10];
Powyższa instrukcja tworzy tablicę o nazwie ''t'', która pomieści 10 liczb całkowitych typu ''int''.
===== Indeksowanie tablic =====
Do poszczególnych elementów tablicy odnosimy się poprzez numer elementu, gdzie elementy są numerowane (indeksowane) liczbami: 0, 1, 2, 3, ...
{{ zajecia:pp1_2020_1:tab2.png |}}
Przykłady posługiwania się tablicami:
float tablica[100];
tablica[0] = 1.23;
tablica[99] = 1.0 / 3;
tablica[1] = tablica[0] - 1 ;
===== =====
* Elementy tablicy są numerowane od 0.
* Wynika z tego, że dla ''N'' elementowej tablicy ostatni dozwolony indeks to ''N-1''.
* Przekroczenie zakresu tablicy może się zakończyć błędem w czasie działania.
Przykład niepoprawnego użycia tablicy:
int x[10];
x[10] = 42;
===== Iteracja po elementach =====
W typowych zastosowaniach iteruje się po kolejnych elementach tablicy za pomocą pętli ''while'' lub ''for''.
Przykład: wyzerowanie wszystkich elementów tablicy:
int i = 0;
int tab[100];
while( i < 100)
{
tab[i] = 0;
i = i + 1;
}
===== =====
Pętla ''for'' pozwala zrealizować to samo w bardziej zwięzły sposób, np,:
int i;
int tab[100];
for (i=0; i<100; i++) tab[i] = 0;
===== Kopiowanie tablic =====
Jeżeli chcemy skopiować zawartość tablicy do innej tablicy wówczas należy przekopiować każdy element osobno. \\
Przykładowo, dla danych tablic ''a'' i ''b'' kopiowanie pierwszych 10-ciu elementów może wyglądać tak:
int i = 0;
while ( i < 10 )
{
a[i] = b[i];
i++;
}
===== Przykładowy program =====
Poniższy program wyznacza sumę oraz wartość średnią ''N'' liczb rzeczywistych podanych przez użytkownika.
#include
int main()
{
int n, i;
float tablica[100];
float suma = 0.0;
printf("Ile liczb: ");
scanf("%d", &n);
printf("Podaj kolejne liczby:\n");
i=0;
while(i
==== Ćwiczenia ====
* Czy powyższy program będzie działał poprawnie dla dowolnej wartości ''N'' (ilość liczb)? Co się stanie dla $N=101$ ?
* Spróbuj zabezpieczyć działanie programu tak aby niemożliwe było wprowadzenie większej liczby wartości niż wynosi rozmiar tablicy.
* Rozbuduj program w taki sposób aby dla podanej sekwencji liczb wyznaczył następujące statystyki:
* wartość maksymalna
* wartość minimalna
* odchylenie standardowe $\sqrt{\frac{1}{N}\sum{(x_i - \hat{x})^2}}$, gdzie $\hat{x}$ to wartość średnia
==== Ćwiczenie: Odwracanie kolejności liczb ====
Napisz program, który wczyta ''n'' liczb rzeczywistych a następnie wyświetli je w odwrotnej kolejności.
**Dane:** liczba ''n'' określająca ilość liczb oraz sekwencja ''n'' liczb rzeczywistych. Zakładamy, że ''n < 1000''\\
**Wynik:** sekwencja ''n'' liczb rzeczywistych w odwrotnej kolejności niż podana na wejściu.\\
**Przykład:**
n=5
1.3
0.0
-2
6
3.14
Wynik:
3.14
6
-2
0.0
1.3
{{page>.:zadania:04_zad_sort&nofooter}}