Składnia:
typ[] nazwa_tablicy;
Przykład:
double[] tablica;
Tablica jest typem referencyjnym, używamy słowa new
double[] tablica = new double[10];
double[] tab2 = { 40.32, 3.13, 345.12}; var[] tab3 = new double[]{ 40.32, 3.13, 345.12}; string[] dni = new string[] { "Pon", "Wt", "Śr", "Czw", "Pią", "Sob", "Niedz" };
[indeks]
double[] tablica = { 40.32, 3.13, 345.12}; tablica[0] = 3.15; Console.WriteLine(tablica[2]); for(int i=0; i < tablica.Length; i++) Console.WriteLine(tablica[i]);
Typy wartościowe:
int
, char
, double
, … Typy referencyjne:
string
), wszystkie klasynew
null
- pusta referencjaŻródło: TutorialsTeacher
int a = 42; int b; b=a; // kopiowanie wartości b++; Console.WriteLine("a={0} b={1}", a, b); int[] ta = { 42, 1, 2 }; int[] tb; tb = ta; // kopiowanie referencji tb[0]++; Console.WriteLine("ta[0]={0} tb[0]={1}", ta[0], tb[0])
Wyjście
a=42 b=43 ta[0]=43 tb[0]=43
Pętla forach()
pozwala wygodnie iterować po elementach kolekcji (tablice, listy, łańcuchy)
Składnia:
foreach (var element in tablica) { // kolejne elementy podstawiane do zmiennej element }
Przykład:
int i = 0; foreach (var element in tablica) { Console.WriteLine("Element [{0}] wynosi: {1}", i, element); i++; }
string tekst = "Ala ma kota"; foreach(var znak in tekst) Console.WriteLine(znak);
Napisz program, który wczytuje liczby aż do podania pustej linii. Po zakończeniu wczytywania program wyświetla wprowadzone liczby w odwrotnej kolejności. Zakładamy, że liczb nie będzie więcej niż 1000.
Sprawdź, co się stanie, gdy przekroczymy zakres indeksów tablicy.
Tworzenie tablicy 2 wymiarowej
int[,] macierz = new int[3, 4];
Dostęp do elementów tablicy
int element = macierz[0, 5];
Przykład z inicjacją
int[,] macierz = new int[,] {{ 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 }}; int[,,] macierz = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } };
Tablice postrzępione (jagged) - to tablice, których elementami są tablice.
Rozmiar tablic może być różny (nie tworzą macierzy prostokątnej)
int[][] jaggedArray = new int[3][]; jaggedArray[0] = new int[5]; jaggedArray[1] = new int[4]; jaggedArray[2] = new int[2];
Dostęp do elementów;
int x = jaggedArray[1][2];
Przykład z inicjacją
int[][] jaggedArray3 = { new int[] { 1, 3, 5, 7, 9 }, new int[] { 0, 2, 4, 6 }, new int[] { 11, 22 } };
Wybrane własności i metody tablic
Własność | Opis |
---|---|
Length | całkowita liczba elementów we wszystkich wymiarach tablicy |
Rank | ilość wymiarów |
Metoda | Opis |
---|---|
GetLength(i) | ilość elementów w i-tym wymiarze |
Klasa Array udostępnia funkcje operujące na tablicach
Metoda | opis |
---|---|
Array.Clear(tab) | zeruje elementy |
Array.Reverse(tab) | odwraca kolejność elementów w tablicy jednowymiarowej |
Array.Sort(tab) | sortuje elementy w tablicy jednowymiarowej |
Napisz program, który wczyta macierz liczb rzeczywistych o wymiarach $N \times M$. Wartości $N$ oraz $M$ podaje użytkownik na początku programu następnie program pobiera kolejne elementy macierzy. Po wczytaniu wszystkich wartości wyświetl zawartość macierzy w postaci tabeli.
Napisz program, który zaszyfruje linię tekstu za pomocą szyfru macierzowego. Metoda szyfrowania polega na umieszczeniu znaków szyfrowanej wiadomości sekwencyjnie w kolejnych wierszach macierzy. Przykładowo tekst „TAJNA WIADOMOŚĆ” umieszczony w macierzy posiadającej 4 kolumny wypełnia macierz o wymiarach 4×4:
T A J N A W I A D O M O Ś Ć
Szyfr uzyskujemy ze znaków odczytanych w kolumnach. W powyższym przykładzie zaszyfrowana wiadomość to: „TAAOA DŚJWOĆNIM”. Sposób kodowania zależy od ilości kolumn macierzy - jest to klucz szyfrujący. Do odszyfrowania wiadomości wykorzystuje się ten sam algorytm, w którym kluczem będzie liczba wierszy macierzy wypełnionej tekstem.
Program wczytuje następujące dane:
Wynikiem działania jest wyświetlenie zaszyfrowanego tekstu oraz liczby uzyskanych wierszy macierzy szyfrującej.
Przykład działania:
Podaj liczbę kolumn (klucz szyfrujący): 4 Wprowadź komunikat: Ala ma kota Zaszyfrowany tekst: Amolata a k Liczba wierszy (klucz deszyfrujący): 3