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:

  1. Pamięć przydzielona do zmiennej c ma typ danych int.
  2. Całkowita pojemność, jaką może pomieścić ta tablica, wynosi 2 * 3 * 4, co odpowiada 24 elementom.
  3. Dane są reprezentowane w postaci 2 tablic z 3 wierszami i 4 kolumnami każda.
Kolumny
c (0) Tablica Wydziwianiec (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 Wydziwianiec (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:

  1. Po pierwsze, deklarujemy zmienną tablicową i wymiary tablicy wraz z liczbą poziomów tablicy, wierszy i kolumn.
  2. Następnie deklarujemy trzy zmienne do iteracji elementów w tablicy.
  3. Następnie używane są pętle. Pierwsza pętla służy do iteracji poziomów, druga do wierszy, a trzecia do kolumn.
  4. 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.

  1. Elementy tablicy
  2. Pozycja / element, w którym należy go wstawić
  3. 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:

  1. Straciliśmy 4 wartości na wejściu, po prostu dając spację i naciskając Enter
  2. Ale mieliśmy ten zakres, aby wprowadzić 4 pozostałe elementy.
  3. 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:

  1. Poprosił użytkownika o wprowadzenie numeru (indeksu) wiersza, który należy usunąć.
  2. 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.
  3. 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.
  4. 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 -

  1. Tablice w R.
  2. Typy danych w MATLAB
  3. Jak utworzyć tablice w C #?
  4. Jak zdefiniowane tablice 3D w Javie?
  5. Tablice w PHP