Tablice jednowymiarowe


Wiadomości ogólne

ZAGADNIENIA

  • Co to jest tablica
  • Tablica jednowymiarowa
  • Przykłady tablic jednowymiarowych
  • Dowiesz się, jak gromadzić wartości w tablicach i wektorach.
  • Poznasz najczęściej używane algorytmy przetwarzania tablic (i wektorów).
  • Napiszesz funkcje przetwarzające tablice (i wektory).
  • Tablica służy do zbierania sekwencji wartości tego samego typu.

    Definiowanie tablicy jednowymiarowej

    typ nazwa_tablicy[ilość_elementów];


    o tablicy

    Typowe algorytmy tablicowe


    Wypełnianie wartościami


    W tej pętli tablica jest zapełniana zerami:
                
                for (int i = 0; i < rozmiar tablicy values; i++)
                {
                    values[i] = 0;
                } 
                
    Teraz wprowadźmy do tablicy squares liczby 0, 1, 4, 9, 16 itd. Zauważmy, że element o indeksie 0 ma wartość 02, element o indeksie 1 — 12 itd.
               
               for (int i = 0; i < rozmiar tablicy squares; i++)
                {
                    squares[i] = i * i;
                }
                


    Kopiowanie

    Weźmy pod uwagę dwie tablice: int squares[5] = { 0, 1, 4, 9, 16 }; int lucky_numbers[5];
    Aby skopiować tablicę, należy skopiować wszystkie jej elementy do nowej tablicy przy użyciu pętli.
    Załóżmy, że chcemy skopiować wszystkie wartości z jednej tablicy do drugiej. Pokazane poniżej przypisanie jest błędne:
    lucky_numbers = squares; // Błąd tna nie można przypisać!!!
    W języku C++ nie można po prostu przypisać jednej tablicy do drugiej, ale jak pokazano na rysunku 4, trzeba skopiować wszystkie elementy przy użyciu pętli:
                
                for (int i = 0; i < 5; i++)
                {
                lucky_numbers[i] = squares[i];    
                }
                

    Suma i średnia

    Oto kod obliczający sumę wszystkich elementów tablicy:
                
                double total = 0;
                for (int i = 0; i < rozmiar tablicy values; i++)    
                {
                    total = total + values[i];
                }
                

    Aby otrzymać średnią, trzeba podzielić sumę przez liczbę elementów tablicy:
    double average = total / rozmiar tablicy values;
    Należy się upewnić, że rozmiar tablicy nie jest równy zero.

    Maksimum i minimum

    Należy skorzystać z algorytmu, w którym utrzymywana jest zmienna do przechowywania największego napotkanego elementu. Oto jego implementacja dla tablic:
                double largest = values[0];
                for (int i = 1; i < rozmiar tablicy values; i++)   
                {
                    if (values[i] > largest) 
                    {  
                        largest = values[i];   
                    }
                }
                
    Warto zauważyć, że pętlę rozpoczynamy od liczby 1, bo zmienną largest zainicjowaliśmy wartością values[0].
    Aby obliczyć najmniejszą wartość, wystarczy odwrócić porównanie.
    Algorytmy te wymagają, by tablica zawierała co najmniej jeden element.

    Separatory elementów

    Podczas rozdzielania elementów przed pierwszym nie należy wstawiać separatora.
    Podczas wyświetlania elementów kolekcji zwykle trzeba je rozdzielić przecinkami lub pionowymi kreskami, np. tak: 1 | 4 | 9 | 16 | 25
    Należy pamiętać o tym, że separatorów powinno być o jeden mniej niż liczb. Separator wypisuje się przed każdym elementem z wyjątkiem pierwszego (o indeksie 0):
                for (int i = 0; i < rozmiar tablicy values; i++)
                {
                    if (i > 0)
                    {
                        cout << " | ";
                    }
                    cout << values[i];
                }    
                
    Przydatne narzędzia/oprogramowanie

    SPRAWDŹ SIĘ

    1. Co następuje po instrukcji case?
    A. :
    B. ;
    C. -
    D. Nowy wiersz.
    
    2. Co jest potrzebne, aby kod nie przebiegał przez kolejne bloki case?
    A. end;
    B. break;
    C. stop;
    D. Średnik.
    
    3. Jakie słowo kluczowe obsługuje niespodziewane przypadki?
    A. all
    B. contingency
    C. default
    D. other
    
    4. Jaki będzie wynik wykonania poniższego kodu?
    int x = 0;
    switch( x )
    {
     case 1: cout << "Jeden";
     case 0: cout << "Zero";
     case 2: cout << "Witaj Świecie";
    }
    A. Jeden
    B. Zero
    C. Witaj Świecie
    D. ZeroWitaj Świecie
    


    1. Utwórz tablicę o nazwie tab1, zawierającą następujące liczby całkowite: 7, 3, 1, 6, 9, 5, 4, 10, 2, 2.
      1. Wypisz zawartość 5 komórki tablicy na ekran. Zmień zawartość 7 komórki tablicy, wprowadzając do niej wartość 12.
      2. Utwórz drugą tablicę o nazwie tab2, o tej samej wielkości co tab1. Przepisz zawartość tab1 do tab2.
      3. Utwórz trzecią tablicę o nazwie tab3, o tej samej wielkości co dwie poprzednie. Zawartością komórek tablicy tab3 jest suma komórek o tych samych indeksach tablic tab1 i tab2.
      4. Przepisz ponownie zawartość tablicy tab1 do tablicy tab2, jednak w odwrotnej kolejności.
    2. Utwórz n-elementową tablicę liczb całkowitych, gdzie n podawane jest przez użytkownika.
      Wypełnij tablicę wartościami podanymi przez użytkownika.
      Znajdź najmniejszy i największy element w tablicy.
      Oblicz średnią wartość elementów tablicy.
      Wylicz ilość wystąpień cyfry 3 w tablicy.
      Dowolnym sposobem posortuj elementy tablicy w porządku rosnącym.
      Znajdź medianę elementów tablicy.
      Wypisz 3 najmniejsze i trzy największe elementy tablicy.
      Zwiększ wartość każdego elementu tablicy podnosząc go do kwadratu.
      Policz ilość liczb parzystych i nieparzystych w tablicy.
      v Podaj ile liczb zawartych w tablicy jest podzielna bez reszty przez 3.
    3. Utwórz 10-elementową tablicę znaków.
      Wypełnij ją literami wprowadzonymi przez użytkownika
      Wypełnij ją 10 literowym wyrazem podanym przez użytkownika.
      Zamień wszystkie wielkie litery na małe i odwrotnie.
      Wypisz zawartość tablicy w losowej kolejności.

    4. Utwórz 100 elementową tablicę liczb całkowitych i wypełnij ją losowymi liczbami.
      Znajdź największą spośród liczb oraz wyświetl na ekranie informację mówiącą o tym, ile razy ta liczba znalazła się w tablicy.
      Wyświetl na ekran liczby nieparzyste.
      Wyświetl na ekran liczby znajdujące się w komórkach o nieparzystych indeksach.
      Program policzy ile liczb zawiera się w przedziale <5, 15) , po czym wypisze te liczby na ekran.
      Znajdź element najbliższy wartością wprowadzonej przez użytkownika liczbie „a”.
      Znajdź poprzednik i następnik najmniejszej wartości w tablicy (wartość komórki o numerze o jeden większym i o jeden mniejszym, niż indeks minimum tablicy).
      Przepisać do nowej tablicy te elementy, których wartość jest >10. Nowa tablica ma mieć rozmiar równy ilości tych elementów.
      Utwórz nową tablicę 100 elementową. Wypełnij ją w taki sposób, aby
      B[i] = A[1] + A[2] + A[3] + … + A[i], gdzie B to nasza nowa, a A, stara tablica.
      Posortuj tablicę malejąco.
      Wypisz na ekran elementy, które występują w tablicy przynajmniej 3 razy.

    5. Utwórz pustą tablicę 100 elementów. Wypełnij tablicę kolejnymi liczbami ciągu Fibonacciego.
      Wypełnij tablicę kolejnymi potęgami liczby 2.
      Wypełni tablicę ciągiem liczb: 3, 6, 9, 12, …
      Wypełni tablicę ciągiem liczb: 2, 4, 8, 16, 32, …





    Przykładowe rozwiązania oraz komentarze do wybranych ćwiczeń i zadań


  • Rozwiązania do ćwiczeń z tej strony

    TEST
    1 --> A, 2 --> B, 3 --> C, 4 --> D.