Spis treści

Tablice

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

Przykładowy program

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

suma.c
#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;
}

Ćwiczenia:

Ć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

Ćwiczenie: Sito Eratostenesa

Napisz program, który wypisze wszystkie liczby pierwsze w zakresie od 2 do n. Zakładamy, że n < 1000000. Do wyznaczenia liczb pierwszych wykorzystaj algorytmu sita Eratostenesa .

Dane: liczba całkowita n (zakładamy, że n<1000000)
Wynik: sekwencja wszystkich liczb pierwszych od 2 do n

Przykład:

n=20
2
3
5
7
11
13
17

Zadanie: Sortowanie liczb

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):

Wynik:

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