Szukaj

1944

Reklama

Chroń swoje dziecko

w Internecie
Reklama

za darmo ...

Kalendarz

Reklama

Jak odbierasz ...

Wygląd portalu
 

"Musicie od siebie wymagać, nawet jeśli inni by od Was nie wymagali..." JP2 [100%]

Reklama
MATRIX, czyli tablice ... PDF Drukuj Email
Ocena użytkowników: / 1
SłabyŚwietny 
Instrukcje i materiały do ćwiczeń - Podstawy programowania w C++
Wpisany przez Administrator   

Z tego artykułu dowiesz się:

  1. Co to jest tablica, czyli macierz
  2. Jakie dane mogą występować w tablicy
  3. Jakie są rodzaje tablic
  4. W jaki sposób "odnaleźć się" w tablicach
  5. Jak stosować pętle for


 

Na co dzień w informatyce używa się zarówno zwykłych danych jak tez całych tablicach danych. Tablica jest to wiele danych tego samego typu poukładanych w rzędach lub rzędach i kolumnach.

Zobrazujmy to na przykładzie:

Zwykła zmienna typu całkowitego:

5

 

Tablica jednowymiarowa (nazywana wektorem) typu całkowitego:

5 1 65 9 2 5

ta tablica jest wektorem o 6 elementach. Element numer [3] ma wartość 65.

 

Znanym nam już rodzajem tablic jednowymiarowych jest tekst, czyli ciąg znaków czyli tablica jednowymiarowa znaków.

char czy_powtorzyc[3] = "t"; //deklaracja i przypisanie 

 

Tablica dwuwymiarowa typu całkowitego:

 

6 3 7 9 2 5 4

0 5 2 7 9 3 5

2 4 6 7 9 3 8 

9 5 7 2 1 4 7

 

gdzie pogrubiony element o adresie [3,5] ma wartość 9.

 

Tablice wielowymiarowe:

Tablica może mieć więcej wymiarów, niż 2.

Mówiąc prościej, tablica wielowymiarowa to tablica tablic.

 macierz[5][6][7]

 

 

Deklaracja tablic:

Aby używać tablic w programie trzeba je uprzednio zadeklarować.

 

char napis[20]; //deklaracja łańcucha znaków

int zbior[34]; //deklaracja łańcucha liczb całkowitych o 34 elementach

float zbior_liczb[5] =  {1,5 6,65 98,01 245,3 7} //deklaracja zbioru liczb rzeczywistych o 5 elementach wraz z przypisaniem

char napis[20] = "Kowalski" //deklaracja łańcucha liter czyli napisu wraz z przypisaniem

float matrix [3][4]; //deklaracja tablicy dwuwymiarowej z elementami zmiennoprzecinkowymi

float macierz[5][6][7]; //deklaracja tablicy 3-wymiarowej z elementami typu zmiennoprzecinkowego

 

Odczytywanie i zapisywanie elementów tablicy:

Tablica jako zbiór danych nie musi być traktowana jako całość - operujemy najczęściej na niektórych jej elementach.

Odwołanie się do konkretnego elementu tablicy wygląda podobnie jak odwołanie się do zwykłej zmiennej:

int macierz[10]; //deklaracja jednowymiarowej tablicy zmiennych typu całkowitego

macierz[4] = 102; //czwarty element tego zbioru odtąd ma wartość 102;

cout << ("Czwarty element tablicy o nazwie 'macierz' ma wartość ") << m[4]; //odwołanie się do konkretnego elementu tablicy

 

 

 ...i zastosowanie :)

Po co potrzebne są tablice?

Po to, by w sposób logiczny grupować dane.

Np.: grając w statki używamy tablicy 2-wymiarowej, gdzie każdy ze 100 elementów może być pusty lub stanowić część lub cały statek.

Strzelając posługujemy się adresem konkretnej "kratki". Plansza do gry w statki to tablica o wymiarach [10][10].

Analogicznie jest w przypadku gry w szachy bądź większości gier planszowych: kiedy ruszamy się wieżą na pole h4to odnosimy się do tablicy pól, czyli używamy macierzy.

 

Ćwiczenie 1:

Napisz program, który generuje tablicę 1-wymiarową, 5-elementową i wyświetla ją na ekranie.

 

Kod programu:

 

 

 

Wywołanie programu:

 

 

Analiza kodu:

int i, macierz[]; // deklaracja zmiennych typu całkowitego - zmiennej i oraz macierzy o 5 elementach (0-4)

randomize(); //deklaracja generatora liczb pseudolosowych

for(i=0; i<5; i++) //pętla for, której działanie opisano poniżej

{ //początek bloku instrukcji pętli

kod... // kod wykonywany w pętli (czyli przy każdym powtórzeniu)

} //koniec bloku instrukcji pętli

 

cout << macierz[i] << ("\t"); //wyświetlenie  poszczególnych elementów tablicy oddzielonych odstępem równym długości przeskoku tabulatora, czyli oddalonych od siebie o równą odległość, dzięki wstawieniu znacznika \t

 

Pętle for

Do tej pory poznaliśmy pętle while... oraz do...while.

Pamiętamy, że pętle działały w ten sposób:

while(warunek){blok instrukcji} //instrukcje z bloku instrukcji wykonywane były "w kółko" dopóki spełniony był warunek w nawiasie. Może się zdarzyć, że pętla nie zostanie wykonana ani razu, kiedy nie jest spełniony warunek z nawiasu.

do {blok instrukcji} while (warunek) //instrukcje z bloku instrukcji wykonywane były "w kółko" dopóki spełniony był warunek w nawiasie z tym, że pierwsze wykonanie nie było sprawdzane pod kątem spełnienia warunku tak więc pętla ta zawsze wykona się przynajmniej raz.

 

Pętla for stosowana jest wtedy, kiedy chcemy, aby blok instrukcji (lub jedna instrukcja) została wykonana konkretną liczbę razy. Np chcemy, aby (tak, jak w przypadku powyżej) program pięciokrotnie wygenerował element losowy i zapisał jako kolejny element tablicy.

składnia pętli for:

for(wartość początkowa; warunek; wyrażenie cykliczne) {blok instrukcji}

wartość początkowa: u nas i=0, czyli na początku i wynosiło zero;

warunek:  warunek, który musi być spełniony aby rozpocząć wykonywanie bloku instrukcji;

 wrażenie cykliczne: wyrażenie wykonywane po bloku instrukcji - przy każdym przebiegu pętli.

i++: dosłownie zwiększ wartość zmiennej i o 1;

analogicznie i-- znaczy zmniejsz wartość zmiennej i o 1;

czyli:

for(i=0; i<5; i++){blok instrukcji} //dla i równego na początku zero i zwiększanego cyklicznie o 1 wykonuj blok instrukcji dopóty, dopóki i jest mniejsze od 5.

Czyli pętla wykona się dokładnie 5 razy dla i równego 0,1,2,3,4.

Warto zauważyć, że poszczególne wartości i przy każdym przebiegu pętli zostały tak dobrane, że od razu oznaczają miejsce (indeks) elementu w tablicy.

 

Przebieg pętli
 1 2
 3 4 5
 Wartość i
 i=0
 i=1 i=2 i=3 i=4
 Indeks elementu w macierzy  [0] [1] [2] [3] [4]
 Wartość elementu macierzy
99
 25 10 88 86

 

Ćwiczenie 2.

Napisz program, który generuje tablicę 10-elementową, gdzie każdy element równy jest 7. Program wyświetla tablicę. 

 

 

kod dla sprawdzenia dostępny jest na końcu artykułu.

 

Ćwiczenie 3.

Napisz program, który generuje tablicę20-elementową liczb losowych nie większych niż 10.

Następnie program sprawdza, czy któryś element nie jest równy 0. Jeśli tak, to program wyświetla indeks tego elementu.

 

 

Zauważmy jedną rzecz: program numeruje elementy rozpoczynając od zera (macierz[0], macierz[1] itd. natomiast człowiek odruchowo zaczyna numerowanie elementów od 1, stąd rozbieżność w postrzeganiu i wypisując numer konkretnego elementu dla człowieka musimy do jego indeksu dodać 1. (Patrz kod w odpowiedziach, jeśli nie wiesz, o co chodzi)

 

kod programu dla sprawdzenia wklejono na końcu artykułu

 

Ćwiczenie 4:

Napisz program, który generuje tablicę 100-elementową liczb losowych.

Następnie program wyszukuje najmniejszy element tablicy i wyświetla jego wartość oraz indeks.

 

Program jest w miarę prosty. Generowanie tablicy odbywa się analogicznie, jak w poprzednich przypadkach, tylko zakres to 0-100 i elementów jest 100

schemat działania pętli znajdującej najmniejszy element:

  1. uznaj, że póki co najmniejszy element to pierwszy z kolei element 
  2. Dla każdego kolejnego elementu (pętla) wykonaj prostą operację:
    • jeśli kolejny element jest mniejszy, niż dotychczasowy to uznaj ten element jako majmniejszy
  3. Na końcu zostaje najmniejszy element 



 

Ćwiczenie5:

Napisz program, który generuje tablicę100-elementową liczb losowych.

Następnie program wyszukuje największy element tablicy i wyświetla jego wartość oraz indeks.

 

 

 ćwiczenie 6:

Napisz program, który losuje macierz 1-wymiarową liczb losowych a następnie sortuje ją. (ustawia jej elementy w kolejności rosnącej).

Wskazówka: trzeba użyć trzech macierzy - jedna jest losowana, druga jest jej kopią i jest modyfikowana podczas sortowania a w trzeciej po kolei dopisujemy elementy znajdowane w pierwszej tablicy.

 

 

ćwiczenie 7:

 

Napisz program, który losuje macierz 1-wymiarową liczb losowych a następnie sortuje ją. (ustawia jej elementy w kolejności malejącej).

Wskazówka: trzeba użyć trzech macierzy - jedna jest losowana, druga jest jej kopią i jest modyfikowana podczas sortowania a w trzeciej po kolei dopisujemy elementy znajdowane w pierwszej tablicy.

 

 

 

 

 

 

 

odpowiedzi:

ćwiczenie 2:

 

 

ćwiczenie 3:

 

 

ćwiczenie 4:

 

 

ćwiczenie 5:

 

 

ćwiczenie 6: