Wprowadzenie do tablic 3D w C
Tablica to grupa elementów o tym samym (jednorodnym) typie danych. Jest również nazywany typem danych pochodnych. Jak już zauważono, tablica 3D wykładniczo powiększa przestrzeń i dodano dodatkową pozycję, aby zlokalizować element w tablicy. W tym temacie poznamy tablice 3D w C.
Weźmy na przykład 4-poziomowy budynek z wieloma miejscami do parkowania rowerów. Tak więc tutaj, aby uzyskać idealne kierunki rowka zaparkowanego roweru, musimy podać numer poziomu z numerem wiersza i kolumny. Kiedy po prostu powiesz tablicy, wiersz 7 i kolumna 4, jakiego poziomu szuka? Ta tablica 3D służy tylko do przechowywania większej ilości danych i reprezentowania pozycji.
Jak możemy je zdefiniować i wdrożyć? Idąc dalej, zrozummy te pojęcia.
Składnia:
W C tablice wymiarowe można zadeklarować w następujący sposób:
W ten sam sposób możemy zadeklarować tablicę 3-D jako:
Znaczenie powyższej reprezentacji można rozumieć jako:
- Pamięć przydzielona do zmiennej c ma typ danych int.
- Całkowita pojemność, jaką może pomieścić ta tablica, wynosi 2 * 3 * 4, co odpowiada 24 elementom.
- Dane są reprezentowane w postaci 2 tablic z 3 wierszami i 4 kolumnami każda.
Kolumny | |||||
c (0) Tablica | Wydziwianie | c (0) (0) | c (0) (1) | c (0) (2) | c (0) (3) |
c (1) (0) | c (1) (1) | c (1) (2) | c (1) (3) | ||
c (2) (0) | c (2) (1) | c (2) (2) | c (2) (3) | ||
Kolumny | |||||
c (1) Tablica | Wydziwianie | c (0) (0) | c (0) (1) | c (0) (2) | c (0) (3) |
c (1) (0) | c (1) (1) | c (1) (2) | c (1) (3) | ||
c (2) (0) | c (2) (1) | c (2) (2) | c (2) (3) |
Dostęp do danych w tablicy można uzyskać poprzez powyższą reprezentację. W reprezentacji tablic 3D pierwszy nawias kwadratowy reprezentuje poziom tablicy, który należy wziąć pod uwagę, drugi to liczba wierszy, a trzeci to liczba kolumn.
Reprezentacja indeksu tablicy dla pierwszego elementu zawsze zaczyna się od zera i kończy na rozmiarze-1. Na przykład, jeśli liczba wierszy wynosi 3, wówczas reprezentacja indeksu dostępu do danych w wierszach będzie wynosić 0, 1 i 2. Ta sama logika dotyczy również poziomu tablicy i indeksów kolumn. Dla powyższej reprezentacji, aby uzyskać dane 1. poziomu tablicy z 2. rzędu 3. kolumny, możemy uzyskać dostęp przez c (0) (1) (2).
Inicjowanie tablic 3D w C
Możemy zainicjalizować tablicę 3D podobną do tablicy 2-D.
Jak wspomniano powyżej, całkowita liczba elementów, które można zmieścić w tablicy, to arraysize1 * arraysize2 * arraysize3. Tutaj jest 2 * 4 * 3, co daje 24.
Wstawianie elementów:
Podobnie jak w przypadku tablicy 2D, do wstawiania elementów w tablicy 3D należy wstawiać dane w poziomach, wierszach i kolumnach. W tym celu używamy koncepcji pętli. W powyższym procesie inicjowania danych w tablicy wstępnie zdefiniowaliśmy wartości.
Tutaj elementy mogą być dynamicznie wstawiane przez użytkownika, zgodnie z wymaganiami. Poniżej znajduje się przykładowy kod do wstawiania elementów.
Kod:
#include
int main()
(
int c(2)(4)(3);
int i, j, k;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
)
Jak zaobserwowano w kodzie:
- Po pierwsze, deklarujemy zmienną tablicową i wymiary tablicy wraz z liczbą poziomów tablicy, wierszy i kolumn.
- Następnie deklarujemy trzy zmienne do iteracji elementów w tablicy.
- Następnie używane są pętle. Pierwsza pętla służy do iteracji poziomów, druga do wierszy, a trzecia do kolumn.
- Funkcja Scanf służy do odczytu danych podczas wprowadzania, a następnie umieszczenia wartości wstawionej w tych pozycjach i, j i k.
W powyższym przykładzie wstawiliśmy dane do macierzy mającej 2 poziomy, 4 rzędy i 3 kolumny. Wynik następujących działań można uzyskać jak poniżej:
Ponieważ nie użyliśmy funkcji printf do wyświetlenia wyniku, napisany program odczytał tylko wartości wprowadzone przez użytkownika. Po zapisaniu funkcji drukowania (przy użyciu pętli) dane wyjściowe będą wyświetlane jako:
Aktualizuj elementy:
Aktualizację elementów w tablicy można wykonać, określając konkretny element, który ma zostać zastąpiony, lub określając pozycję, w której należy dokonać zamiany. Do aktualizacji zazwyczaj wymagamy następujących informacji.
- Elementy tablicy
- Pozycja / element, w którym należy go wstawić
- Wartość do wstawienia.
Aby zaktualizować dane w tablicy poprzez szczegółowe informacje o elemencie, najpierw musimy wyszukać ten element w tablicy, zrozumieć jego położenie, a następnie zastąpić stary element nowym elementem.
Poniżej podajemy dwa przykłady aktualizacji elementu tablicy 3D.
Po pierwsze przejdźmy do przykładu, w którym pozycja elementu do aktualizacji jest już znana.
Kod
#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
c(1)(1)(1) = 85;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)
W powyższym programie wybrany jest element na 1. poziomie, 1. rzędzie i 1. kolumnie, a wartość danych w tej pozycji została zaktualizowana.
Dane wyjściowe dla powyższych są następujące:
W drugim przykładzie pokażemy, jak pozycję elementu można dynamicznie przyjmować jako wartość wprowadzoną przez użytkownika, i aktualizujemy wartość elementu w tej konkretnej pozycji.
Kod:
#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the level, row and column number: ");
scanf("%d %d %d", &i, &j, &k);
printf("Enter the new number you want to update with: ");
scanf("%d", &num);
c(i)(j)(k) = num;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)
Dane wyjściowe są następujące. W tym przypadku użyliśmy funkcji scanf do odczytania wartości podanej przez użytkownika zgodnie z jego wyborem pozycji elementu na podstawie poziomu tablicy, wiersza i numerów kolumn.
Czy jako ćwiczenie możesz spróbować napisać program aktualizujący całą kolumnę macierzy o wartości wprowadzone przez użytkownika?
Teraz, jak wiemy, w tablicy 3D deklarujemy rozmiar tablicy na samym początku. Zdajemy sobie sprawę z rozmiaru tablicy, ale co jeśli użytkownik poda losowy numer wiersza i kolumny poza naszym rozmiarem?
Co jeśli wprowadzimy więcej elementów niż jest to wymagane w tablicy?
Zauważ, że ponieważ nie napisaliśmy żadnego warunku if / else ani bloków try / catch, dane wyjściowe macierzy się nie zmieniają. Możemy jednak napisać kod, korzystając z wyżej wymienionych warunków, aby wyświetlić błędy w takich przypadkach.
Jako ostatni przykład, czy nie jesteś ciekawy, co się stanie, jeśli pominiemy niektóre elementy pomiędzy nimi? Co robi mój program?
Jak zaobserwowano w powyższej produkcji:
- Straciliśmy 4 wartości na wejściu, po prostu dając spację i naciskając Enter
- Ale mieliśmy ten zakres, aby wprowadzić 4 pozostałe elementy.
- Następnie określiliśmy ostatni poziom, ostatni wiersz i ostatni element kolumny, które mają zostać zmienione na 78. A wynik jest zgodny z oczekiwaniami, prawda?
Usuwanie elementów
Po koncepcjach wstawiania i aktualizacji danych wewnątrz tablicy 3D, zobaczmy teraz, jak możemy usunąć cały wiersz z tablicy.
Napisaliśmy program w prostym formacie, aby łatwo zrozumieć pojęcie różnych operacji.
Kod:
#include
int main()
(
int c(2)(4)(3), i, j, k, num, x;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the value of row number to delete: ");
scanf("%d", &x);
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
if(j==x)
(
for(k=0;k<3;k++)
(
if((j+1)<4)
(
printf("\t%d", c(i)(j+1)(k));
)
)
j ++;
)
jeszcze
(
dla (k = 0; k <3; k ++)
(
printf („\ t% d”, c (i) (j) (k));
)
)
printf („\ n”);
)
printf („\ n”);
)
)
Dynamicznie pobierał wartości z tablicy. Wykonano następujące kroki:
- Poprosił użytkownika o wprowadzenie numeru (indeksu) wiersza, który należy usunąć.
- Używanie do iteracji w pętli poziomów, wierszy i kolumn tablicy. Porównujemy, czy numer wiersza i numer wejściowy użytkownika są zgodne, czy nie.
- Jeśli są one zgodne i jeśli numer wiersza jest mniejszy niż rozmiar tablicy, drukujemy następny wiersz. W przeciwnym razie drukujemy wiersz takim, jaki jest.
- Tutaj, ponieważ nie mieliśmy żadnych warunków na poziomie tablicy, określony numer wiersza jest usuwany z obu poziomów tablicy.
Dane wyjściowe są następujące:
Co jeśli podamy numer wiersza poza granicą tablicy?
Nie znajdzie wiersza do usunięcia i wyjścia z programu poprzez wydrukowanie całej tablicy.
Jak już wiemy, możemy nawet dynamicznie deklarować wartości liczby wierszy i kolumn i odpowiednio pisać program.
Czy to nie wygląda na proste i łatwe do nauczenia się?
Czy jako ćwiczenie możesz teraz spróbować usunąć konkretny element z tablicy 3d?
Wniosek
W tej sekcji nauczyliśmy się podstawowych operacji na tablicach trójwymiarowych.
Tablica 3D zawiera wiele zestawów tablic 2-D. Jak widzieliśmy szachownicę jako przykład tablicy 2D, jeśli umieściliśmy wiele szachownic razem, tablica 3D może pomóc nam najpierw wybrać szachownicę, z którą chcesz grać, a następnie przejść do rzędów i kolumn tej szachownicy.
Spróbuj rozwiązać podstawowe operacje tablic 3d i baw się dobrze, ucząc się C.
Polecane artykuły
Jest to przewodnik po tablicach 3D w C. Omawiamy tutaj inicjalizację tablicy 3D podobnej do tablicy 2D i elementów tablicy. Możesz także spojrzeć na następujący artykuł, aby dowiedzieć się więcej -
- Tablice w R.
- Typy danych w MATLAB
- Jak utworzyć tablice w C #?
- Jak zdefiniowane tablice 3D w Javie?
- Tablice w PHP