środa, 23 marca 2016

Lekcja 4 - tablice jedno i dwuwymiarowe

Autor: Faradaj

Umiemy już tworzyć  wyprowadzać, wprowadzać dane z/do zmiennych. Czas teraz przemyśleć kwestie następującą: Chcemy stworzyć bardzo dużą ilość zmiennych. Skoro tak chwaliłem cpp to czy nie ma łatwiejszego sposobu niż wymyślanie mnóstwa nazw zmiennych? Owszem, chwaliłem i jest. Do tego właśnie służą tablice.

Wyobraź sobie sytuację, że potrzebujesz dziesięciu zmiennych liczbowych.

Zapewne zadeklarujesz je tak:

int a,b,c,d,e,f,g,h,i,j;

A poźniej wczytasz tak:

cin>>a>>b>>c>>d>>e>>f>>g>>h>>i>>j;

lub co gorsza, tak:

cin>>a;
cin>>b;
cin>>c;
cin>>d;
cin>>e;
cin>>f;
cin>>g;
cin>>h;
cin>>i;
cin>>j;

Cpp jednak oferuje Ci coś takiego jak tablica. Polega to na tym, że deklarujesz nie jedną zmienną o całe pudełko. Robisz to tak:

int nazwa_tablicy[ilość_elementów]; 

W ten sposób utworzyłeś w pamięci twojego programu ilość_elementów zmiennych typu int. 

Każda tablica posiada tyle komórek (miejsc/zmiennych), ile zadeklarowałeś na początku. Ilość miejsc, które ma tablica jest zawsze stała!

Dobra, ale skąd komputer będzie wiedział o którą zmienną z tablicy mi chodzi? Sprawa jest prosta każda z komórek ma swój adres, który przy wpisywaniu wartości do niej lub wypisywaniu wartości z niej należy podać, wpisując go w nawiasach kwadratowych.  Spójrz poniżej:

Komórka:
Komórka 1
Komórka 2
Komórka 3
Komórka 4
Komórka 5
Adres
0
1
2
3
4

Zauważ, że adresy komórki zaczynają się  od 0, a kończą się na ilość_elementów-1. Ma to ważne znaczenie w zastosowaniu. Chcę wpisać do komórki 1 wartość 2, robię to tak:

int tab[5];     //deklaruje tablice o pięciu komórkach
tab[0]=2;    //przypisuje wartość 2 komórce 1

Wartość komórek można podać już przy tworzeniu tablicy w następujący sposób:

int tab[5]={0,0,0,0,0};   //stworzyłem tablice i każdej komórce przypisałem wartość 0

Tablica może być dowolnego typu – zamiast int może być również float, char, string, bool, co żywnie sobie wymarzysz.

Stwórzmy program, który wypisze policzy średnią arytmetyczną z naszych ocen z informatyki. Najpierw poprosi o oceny, a później poda średnią:

int tab[5]; //zakładamy, że mamy 5 ocen
cin>>tab[0]>> tab[0]>> tab[1]>> tab[2]>> tab[3]>> tab[4];
cout<<(tab[0]+ tab[1]+ tab[2]+ tab[3]+ tab[4])/5;

Zaoszczędziliśmy nie wiele, ale to tylko dla tego, że nie wiesz jeszcze, jak działa pętla. To były tablice jednowymiarowe.

W temacie obiecałem, że powiem również o tablicach dwuwymiarowych.

Tablice jednowymiarowe miały tylko jeden wiersz i mnóstwo komórek. Tablice dwuwymiarowe będą posiadały więcej wierszy. Ile? Tyle, ile zadeklarujesz. Robi się to tak:

float tab[ilość kolumn][ilość wierszy];

Działa to identycznie , jak z tablicami jednowymiarowymi. Wyobraź sobie, że masz stworzyć program, który pobierze wiek i wzrost np.3 osób.

float tab[3][2];          /* tworze tablice o trzech kolumnach (każda osoba ma swoją) i 2 wierszach: wiek i wzrost */

Następnie podaje wiek i wzrost pierwszej osoby:

cin>>tab[0][0]>>tab[0][1];  

Jak widzisz tablice to nic trudnego, czy jedno czy dwuwymiarowe – działają tak samo. Zastosowanie tablic docenisz w lekcji o pętlach.

Zadanie:
1.      Napisz program, który najpierw pobierze od ciebie nazwiska 5 osób i ich wiek, a następnie wypisze osobe 1 z  wiekiem osoby 4.
2.      Napisz program, który pobierze 10 zmiennych typu int i jeżeli są większe od 3 lub mniejsze od 1 to je wypisze.

Brak komentarzy:

Prześlij komentarz