<style type="text/css"> p { text-align: left;} .reveal pre code { height: 100%; max-height: 100%; box-sizing: border-box; } </style>

Tablica przechowuje ciąg elementów tego samego typu, np. liczb całkowitych typu int.

Tablica posiada swoją nazwę, ma określony typ elementów składowych oraz rozmiar.

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.

Do poszczególnych elementów tablicy odnosimy się poprzez numer elementu, gdzie elementy są numerowane (indeksowane) liczbami: 0, 1, 2, 3, ...

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;

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;

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++; }

Poniższy program wyznacza sumę oraz wartość średnią N liczb rzeczywistych podanych przez użytkownika.

#include <stdio.h> 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<n) { scanf("%f", &tablica[i]); i++; } for(i=0; i<n; i++) suma = suma + tablica[i]; printf("Suma = %f\n", suma); printf("Srednia = %f\n", suma/n); return 0; }

Czy powyższy program będzie działał poprawnie dla dowolnej wartości N (ilość liczb)? Co się stanie dla ?

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 , gdzie to wartość średnia

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

Napisz program o nazwie sortowanie.c, który posortuje ciąg liczb rzeczywistych w kolejności od najmniejszej do największej. Spróbuj samodzielnie zaprojektować i zaimplementować algorytm sortowania.

Dane wejściowe (podaje użytkownik):

liczba całkowita n określająca ilość liczb

sekwencja n liczb rzeczywistych (zakładamy, że liczb nie będzie więcej niż 1000)

Wynik:

sekwencja n liczb wypisanych w kolejnych liniach w rosnącej kolejności.

Przykład:

n=5
1.3
0.0
2
6
3.14

Wynik:

0.000000
1.300000
2.000000
3.140000
5.000000
6.000000

Rozwiązanie w postaci pliku zawierającego program w języku C umieść tutaj